obtenir la clé de noms d'objet JSON à l'aide de Gson
J'ai un objet JSON que j'aimerais avoir les noms de clés et de les stocker dans une liste de tableaux. J'ai utilisé le code suivant
jsonData(String filename) {
JsonParser parser = new JsonParser();
JsonElement jsonElement = null;
try {
jsonElement = parser.parse(new FileReader(filename));
} catch (JsonIOException | JsonSyntaxException | FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
JsonObject jsonObject = jsonElement.getAsJsonObject();
int i = 0;
for (Entry<String, JsonElement> entry : jsonObject.entrySet()) {
String key = entry.getKey();
JsonElement value = entry.getValue();
keys.add(key);
i++;
}
nKeys = i;
}
Si j'utilise ce code avec un simple objet JSON
{
"age":100,
"name":"mkyong.com",
"messages":["msg 1","msg 2","msg 3"]
}
Cela fonctionne bien. l'âge, le nom et les messages (pas les valeurs) sont ajoutés à ma liste de tableaux. Une fois que j'ai essayer d'Utiliser ce même code avec un plus complexe JSON comme ce
{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity /100) * 90;"
}
}}
Je seulement obtenir la racine de la clé. Quelqu'un peut me pointer dans la bonne direction avec ce?
Merci à tous!
- Je pense que vous devriez récursivement itérer sur les touches
- À partir de laquelle des bibliothèques JsonParser', 'JsonElement" et "JsonObject' sont?
Vous devez vous connecter pour publier un commentaire.
Au lieu de méandres à travers la Gson (JSON) de l'API avec des boucles et instructions conditionnelles, je préfère utiliser Gson pour ce que j'en pense qu'il fait de mieux: offrir de très simple (dé)sérialisation de traitement avec seulement quelques lignes de code. J'avais découpler toute manipulation de données/interrogation/présentation des préoccupations de la (dé)sérialisation préoccupation. En d'autres termes, dans la mesure du possible, de manipuler les données en tant que de besoin, avant de sérialisation, et, de même, de manipuler les données en tant que de besoin, après la désérialisation d'elle.
Ainsi, si, pour une raison que je voulais toutes les clés à partir d'une structure JSON, et je voulais utiliser Gson, je serais probablement approche comme suit. (Bien sûr, je ne peut actuellement pas penser à une raison pourquoi une telle chose pourrait être utile).
input_without_lists.json
input_with_lists.json