Java 仅使用org.JSON解析JSON
我一直在努力完成一些我认为使用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": [{
{
"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库的更复杂的替代方案,请查看及其,和/或。