Ad esempio:Come parse nested object/array usando parser jsoncpp in C++?
Json::Reader reader;
Json::Value val;
ifstream file("JSON/test.json");
bool success = reader.parse(file, val, false);
vector<string> obj = val.getMemberNames();
for (int i = 0; i < val.size(); i++)
{
// switch type of value
switch (val.get(obj.at(i), "default").type())
{
case stringValue:
cout << "I'm string" << endl;
... need to save **membername** and **value**
break;
case intValue:
cout << "I'm int" << endl;
... need to save **membername** and **value**
break;
case nullValue:
cout << "I'm null" << endl;
break;
case arrayValue:
... code to parse an array (with nested sure) ...
... need to save
break;
case objectValue:
... code to parse an object (with nested sure) ...
... need to save
break;
}
}
Esempio di file JSON (JSON/test.json):
{
"layout": "fit",
"xtype": "viewport",
"height": 200,
"style": {
"backgroundColor": "46f0a8"
},
"items":
[
{
"title": "Management Console",
"padding": "10 10 10 10",
"bodyPadding": 10,
"autoScroll": true,
"items2": [1, 2, 3]
}
]
}
Nella matrice articoli, possiamo vedere un'altra matrice (nested) chiamato items2 .
possibile riscontrare i seguenti per gli array:
array[Jacob, Joseph] or
array[{name: Jacob, name: Joseph}] or
array[{name: Jacob}, {name: Joseph}]
Per gli oggetti è simile. In ogni campo, ovviamente, possono essere molti oggetti/matrici annidate. Come posso salvare i dati in variabili C++?
Non è abbastanza chiaro per me, cosa stai chiedendo davvero. Vedo 3 domande. Come posso elaborare i dati 'array' e' object' nella libreria 'jsoncpp'? Come posso adattarmi alle diverse convenzioni per l'archiviazione dei dati? Come gestisco casi generali/nidificati? – luk32
Non è chiaro se si desidera analizzare una classe C++ predefinita o se si desidera analizzare dati JSON arbitrari. Per quest'ultimo caso, non c'è davvero alcun punto che converta 'JSON :: Value' in altri formati; basta usare 'JSON :: Value' direttamente. –