从json获取元素

时间:2016-02-25 10:32:01

标签: java json playframework-2.4

我想为“in”或“out”元素中的所有元素创建一个java列表。

我的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”元素的列表?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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
    }
}

现在我可以为数据库创建我的Object。 @eztam谢谢你