2016-02-25 1 views
2

Je veux avoir une liste java pour tous les éléments qui sont dans l'élément "in" ou "out".obtenir des éléments de json

Ma chaîne JSON:

{"in":[ 
     {"id":4,"ip":"192.168.0.20","pinSysNo":4,"pinSysName":"pg6","folderName":"gpio4_pg6","alias":"d","direction":"digital_in"}, 
     {"id":3,"ip":"192.168.0.20","pinSysNo":3,"pinSysName":"pb18","folderName":"gpio3_pb18","alias":"c","direction":"digital_out"} 
     ], 
"out":[ 
     {"id":1,"ip":"192.168.0.20","pinSysNo":1,"pinSysName":"pg3","folderName":"gpio1_pg3","alias":"a","direction":"digital_in"}, 
     {"id":2,"ip":"192.168.0.20","pinSysNo":2,"pinSysName":"pb16","folderName":"gpio2_pb16","alias":"b","direction":"digital_in"} 
      ] 
}:"" 

Jusqu'à présent, je fait de cette façon:

String message = json.findPath("in").textValue(); 

Mais cette façon ne peut accéder à la première hiérarchie.

Mon exemple json montre deux éléments dans l'élément "in". Comment puis-je obtenir une liste de ces éléments "in" internes?

+1

Quelle bibliothèque utilisez-vous pour analyser le document json? –

Répondre

0

Merci pour votre aide. J'ai trouvé un autre moyen de trouver tous les sous-éléments. exemple JSON:

{"in":[ 
      {"id":4,"ip":"192.168.0.20","pinSysNo":4,"pinSysName":"pg6","folderName":"gpio4_pg6","alias":"d","direction":"digital_in"}, 
      {"id":3,"ip":"192.168.0.20","pinSysNo":3,"pinSysName":"pb18","folderName":"gpio3_pb18","alias":"c","direction":"digital_out"} 
      ], 
     "out":[ 
      {"id":1,"ip":"192.168.0.20","pinSysNo":1,"pinSysName":"pg3","folderName":"gpio1_pg3","alias":"a","direction":"digital_in"} 
      ,{"id":2,"ip":"192.168.0.20","pinSysNo":2,"pinSysName":"pb16","folderName":"gpio2_pb16","alias":"b","direction":"digital_in"} 
      ] 
} 

Ma solution:

JsonNode json = request().body().asJson(); 
Logger.info("JSON : " + json.findPath("in").findPath("id")); 
Logger.info("JSON : " + json.findValues("in")); 
List<JsonNode> ins = new org.json.simple.JSONArray(); 
ins = json.findValues("in"); 

for (final JsonNode objNode : ins) { 

    for (final JsonNode element : objNode) { 
     Logger.info(">>>>>" + element.findPath("id")); 
     //create my object for database 
    } 
} 

Maintenant, je peux créer mon objet pour la base de données. @eztam merci

1

Vous pouvez utiliser la bibliothèque JSONSimple afin d'analyser vos données JSON par ce code:

JSONParser parser = new JSONParser(); 
    JSONObject o = (JSONObject) parser.parse(yourJsonAsString); 
    JSONArray ins = (JSONArray) o.get("in"); 
    JSONArray outs = (JSONArray) o.get("out"); 

    String firstIpAddress = ((JSONObject) ins.get(0)).get("ip").toString(); 
+0

Voulez-vous dire par là: JSONObject o = (JSONObject) parser.parse (json.asText()); J'obtiens une ecxeption: org.json.simple.parser.ParsException. C'est mon objet Json: JsonNode json = request(). Body(). AsJson(); –

+0

J'ai exécuté le code ci-dessus avec le JSON que vous avez posté dans la question et cela a très bien fonctionné. Je suppose que votre JSON n'est pas dans un format approprié. Qu'est-ce que 'json.asText()' renvoie exactement? Est-ce valide JSON? – eztam

+0

Merci eztam –