迭代JSON对象的集合

时间:2018-03-19 02:05:47

标签: java json netbeans

我有一个名为mani.json的JSON文件,其中包含多个对象,每个对象包含3个键值对,这些键值对包含一些工件文件的信息。

{ "art_src_path": "source/subdir/hi-there.txt","art_id": "6945-L9.txt","art_date": "2018:03:10 01:10:33"}
{ "art_src_path": "source/hello-world.txt","art_id": "10426-L13.txt","art_date": "2018:03:10 01:10:33"}
{ "art_src_path": "source/subdir/testfile.txt","art_id": "50518-L66.txt","art_date": "2018:03:10 01:10:33"}

我想在另一个名为FileTest.java的文件中遍历每个对象,并获取与art_src_path对应的值。我的FileTest.java文件包含如下代码:

<!-- language: java -->

JSONParser parser = new JSONParser();
JSONObject a = (JSONObject) parser.parse(new FileReader("mani.json"));

for (Object o : a ) {
   String path = (String) o.get("art_src_path");
   File myFile = new File(path);  
   System.out.println("Source path: "+path);
}

NetBeans会提示​​错误,并指出解析器返回的对象不可迭代,因此我无法使用for-each循环。

虽然这段代码经过一定的修改,可以很好地迭代array个对象,但它似乎无法迭代object个对象。

所以我有两个问题:

  1. 解析器返回什么;所以它可以迭代一个数组而不是一个对象?
  2. 如何遍历mani.json中的所有对象以从每个对象获取art_src_path的值?
  3. 到目前为止,几乎所有答案都告诉我如何迭代一组对象。我能够做到这一点。我需要知道如何迭代对象的对象。

    谢谢。

1 个答案:

答案 0 :(得分:0)

mani.json文件是否是正确的json格式?如果是这样,列表将是JSONArray。 JSONArray可以迭代,但JSONObject不能。 如果mani.json文件不是json格式而只是文本文件。逐行读取并将每个解析为JSONObject。

select sum(amount)
from invoices i join
     invoices i2
     on i2.id = 2 and
        (i.date < i2.date or
         i.date = i2.date and i.id <= i2.id
        );