从 json 获取元素

get elements from json

我想为 "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" 元素的列表?

您可以使用库 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();

感谢您的帮助。我找到了另一种查找所有子元素的方法。 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 谢谢你