Java 仅使用org.JSON解析JSON

Java 仅使用org.JSON解析JSON,java,json,Java,Json,我一直在努力完成一些我认为使用org.json会很简单的事情。我收到一些JSON,如下所示: { "startDate": "2016-08-22T19:07:20.000Z", "endDate": "2016-08-23T19:07:20.000Z", "products": [{ "name": "<Device Level Product>", "deviceIdSensorIdArr": [{

我一直在努力完成一些我认为使用org.json会很简单的事情。我收到一些JSON,如下所示:

{
    "startDate": "2016-08-22T19:07:20.000Z",
    "endDate": "2016-08-23T19:07:20.000Z",
    "products": [{
        "name": "<Device Level Product>",
        "deviceIdSensorIdArr": [{
            "deviceId": 13124,
            "sensorId": null
        }],
        "dataProductId": 1,
        "dataProductFormatId": 2,
        "searchTypeId": 5,
        "searchNodeId": 115,
        "siteDeviceId": null,
        "resourceTypeId": 1500,
        "resourceId": 183,
        "parameter": {
            "35": "1",
            "38": "1",
            "40": ["41", "0"]
        }
    }, {
        "name": "Air Temperature",
        "deviceIdSensorIdArr": [{
            "deviceId": 13124,
            "sensorId": 9044
        }],
        "dataProductId": 1,
        "dataProductFormatId": 2,
        "searchTypeId": 5,
        "searchNodeId": 115,
        "siteDeviceId": null,
        "resourceTypeId": 1501,
        "resourceId": 5235,
        "parameter": {
            "35": "1",
            "38": "1",
            "40": ["41", "0"]
        }
    }]
}
我需要获取“产品”数组中每个对象的“deviceId”值。检索对象中的条目(如“name”或“searchNodeId”)很容易,但我很难获取“deviceId”,因为它是下面的第二层。下面的代码是我到目前为止的代码。我可以很容易地得到第一层的值,比如name,但不能得到deviceId。我相信对于其他库有一种更简单的方法,但我只被允许使用org.JSON,而且是第一次使用它

        values = wp.getFormParameters("parameters");
        JSONObject obj = new JSONObject(values);
        JSONArray products = obj.getJSONArray("products");
        for(int i = 0; i < products.length(); ++i){
            String name = products.getJSONObject(i).getString("name");
            JSONObject deviceIdStr = products.getJSONObject(i).getJSONObject("deviceIdSensorIdArr");
            String deviceId = deviceIdStr.getString("deviceId");
        }
values=wp.getFormParameters(“参数”);
JSONObject obj=新的JSONObject(值);
JSONArray products=obj.getJSONArray(“产品”);
对于(int i=0;i
编辑

为了澄清问题的重点,我不知道如何使用org.JSON函数进入JSON字符串的第二层。我可以自己编写一个方法来解析deviceId,但必须有一种使用org.JSON的方法,我还没有找到。

试试这个-

JSONObject obj = new JSONObject(content);
    JSONArray products = obj.getJSONArray("products");
    for(int i = 0; i < products.length(); ++i){
        String name = products.getJSONObject(i).getString("name");
        JSONArray array = products.getJSONObject(i).getJSONArray("deviceIdSensorIdArr");
        for (int j = 0; j < array.length(); j++) {
            String string = array.getJSONObject(j).getString("deviceId");
            System.out.println(string);
        }
    }
JSONObject obj=新的JSONObject(内容);
JSONArray products=obj.getJSONArray(“产品”);
对于(int i=0;i
产量为

13124


13124

你对什么感到困惑?你被封锁在哪里?你懂吗?是的,我懂JSON。我可以得到“DeviceIDSensoridar”变量的复杂字符串,但不确定如何使用org.JSON进一步解析它。我是说。我可以强行解析,但必须有一种内置的方法,用org.JSON来提取子组件,我无法理解。没有。如果您需要JSON对象、JSON数组和JSON对象中的JSON字符串,那么您需要以这种方式对其进行解析。您希望采用什么样的内置方式?例如,只需给出密钥名称,库就应该给出值。如果您愿意探索org.json库的更复杂的替代方案,请查看及其,和/或。