2016-02-25 3 views
2

Я хочу иметь список java для всех элементов, находящихся в элементе «in» или «out».получить элементы из json

Моя строка 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"} 
      ] 
}:"" 

До сих пор я сделал так:

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

Но этот путь может только доступ к первой иерархии.

Мой пример json показывает два элемента в элементе «in». Как я могу получить список этих внутренних элементов «in»?

+1

В какой библиотеке вы используете синтаксический анализ json doc? –

ответ

0

Спасибо за вашу помощь. Я нашел другой способ найти все вспомогательные элементы. 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"} 
      ] 
} 

Мое решение:

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 
    } 
} 

Теперь я могу создать объект для базы данных. @eztam thank you

1

Вы можете использовать библиотеку JSONSimple для того, чтобы проанализировать данные JSON с помощью этого кода:

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

Вы имеете в виду: JSONObject o = (JSONObject) parser.parse (json.asText()); Я получаю ecxeption: org.json.simple.parser.ParsException. Это мой Json Object: JsonNode json = request(). Body(). AsJson(); –

+0

Я выполнил код сверху с JSON, который вы разместили в вопросе, и он работал очень хорошо. Я думаю, что ваш JSON не в правильном формате. Что возвращает 'json.asText()' точно? Действительно ли JSON? – eztam

+0

Спасибо, eztam –

Смежные вопросы