有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从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”元素的列表


共 (2) 个答案

  1. # 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();
    
  2. # 2 楼答案

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

    现在我可以为数据库创建对象了。 @伊兹塔姆谢谢