java - Java 中 JSONArray 迭代中的数组

标签 java json arrays

我的 Json 是:

{
    "Response": {
        "Asset": [
            {
                "id": 2461,
                "name": "TestAsset7771",
                "model_name": "TestModel777",
                "serial_number": "TestAsset7771",
                "current_data": {
                    "timestamp": "",
                    "name": "Temperature",
                    "value": "?"
                }
            },
            {
                "id": 2448,
                "model_id": 1229,
                "name": "TestAsset777",
                "model_name": "TestModel777",
                "serial_number": "TestAsset777",
                "current_data": {
                    "timestamp": "",
                    "name": "Temperature",
                    "value": "?"
                }
            }
        ]
    }
}

我的代码是:

JSONObject outerObject = new JSONObject(jsonObj.toString());
JSONObject innerObject = outerObject.getJSONObject("Response");
JSONArray jsonArray = innerObject.getJSONArray("Asset");
for (int i = 0, size = jsonArray.length(); i < size; i++)
{
    JSONObject objectInArray = jsonArray.getJSONObject(i);
    String[] elementNames = JSONObject.getNames(objectInArray)
    for (String elementName : elementNames)
    {
       String value = objectInArray.getString(elementName);
       System.out.printf("name=%s, value=%s\n", elementName, value);
    }
}

对于内部数组——即当前数据,我得到的值是:

name=current_data, value={"timestamp":"","name":"Temperature","value":"?"}

我如何放置另一个内部数组以便我可以获得值 “时间戳”:“”,“名称”:“温度”,“值”:“?”在单独的变量中而不是完整的 JSON

最佳答案

最好用Gson解析 JSON。无论如何,如果您决定按原样进行操作,请尝试:

你有这样一个类:

class CurrentData{
  String name,timestamp,value;
  void print(){
    System.out.printf("name=%s, timestamp=%s, value=%s\n", name,timestamp, value);
  }
}

现在,按如下方式更改您的 for 循环:

 for (String elementName : elementNames)
  {
    if(!elementName.equals("current_data")){
    String value = objectInArray.getString(elementName);
    System.out.printf("name=%s, value=%s\n", elementName, value);
    }
    else{
    CurrentData obj=new CurrentData();// You can use array of objects declaring outside the loop as your need
    JSONObject curr_object=objectInArray.getJSONObject("current_data");
    obj.name=curr_object.getString("name");
    obj.timestamp=curr_object.getString("timestamp");
    obj.value=curr_object.getString("value");
    obj.print();
    }
  }

关于java - Java 中 JSONArray 迭代中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19686777/

相关文章:

java - 如何使用 Openfire 和 XMPP 在 Android 中制作聊天机器人应用程序

java - 使用 Java SecureRandom 进行洗牌以实现加密目的?

Java - 双重比较

python - 导入json并将所有列转换为字符串

java - java中如何用科学计数法表示数字?

java - 使用 Jackson 库自定义 pretty-print

json - JSONiq 和 XQuery 3.1 之间有什么区别?

arrays - 如何在 meteor 发布函数中设置嵌套数组值?

php - in_array 的问题,返回 false

python - 生成一个 2 的幂的 NumPy 数组