java - 迭代 JSON 对象数组

标签 java arrays json

我正在使用 org.json.simple 库来构造 JSONObjectJSONArray。所以我的结构看起来像

c= [
  {
    "name":"test",
    "age":1
  },
  {
   "name":"test",
   "age":1
   }
]

为了在java中迭代数组,我试过了

for (int i = 0; i < c.size(); i++) {
    JSONObject obj = (JSONObject) c.get(i);
    System.out.println(obj.get("name"));        
}

它打印了 null,但是当尝试打印 obj.toString 时,它按预期打印了 JSON 字符串。

我正在使用 org.json.simple jar,所以不能使用定义的方法 org.json.JSONArrayorg.json.JSONObject.

有什么想法可以使用键从对象中获取值吗?

最佳答案

你的代码绝对正确,它与 org.json.simple 一起工作得很好:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonTest {
    public static void main(String[] args) throws ParseException {
        JSONArray c = (JSONArray) new JSONParser()
                .parse("[ { \"name\":\"test\", \"age\":1 }, "
                        + "{ \"name\":\"test\", \"age\":1 } ]");
        for (int i = 0; i < c.size(); i++) {
            JSONObject obj = (JSONObject) c.get(i);
            System.out.println(obj.get("name"));        
        }
    }
}

输出:

test
test

检查输入 JSONArray 是如何创建的。里面可能有不一样的东西。例如,您可能在键名中有不可打印的字符,因此在使用 c.toString() 时看不到它,但是 obj.get("name") 失败。

关于java - 迭代 JSON 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31045423/

相关文章:

Php:字符串索引不一致?

matrix - 使用 jblas 的数组索引越界异常

java - 线程 “main”中的异常java.lang.ClassNotFoundException:orienit.hadoop.training.sed

ruby-on-rails - Ruby - 如何解析数组中的日期

arrays - 使用 CodeIgniter 2.0 上传多个文件(数组)

iphone - 只有 iOS 7 崩溃 [NSNull intValue] : unrecognized selector sent to instance

javascript - 无法使用 $http 读取 json 文件

java - 如何将这 4 个循环函数简化为 1 个函数?

java - log4j,国外日志记录

json - 解析字段名称包含下划线的 JSON