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?
InformationsquelleAutor user2229544 | 2013-03-31