0

我有这个 JSON 文件,它被读取并存储在一个String被调用的文件中jsonString,它看起来像这样:

{
  "position":1,
  "team_id":10260,
  "home":
  {
    "played":18,
  },
},
{
  "position":2,
  "team_id":8456,
  "home":
  {
     "played":12,
  },
},

解析代码:

JSONObject obj = new JSONObject(jsonString);
Iterator it  = obj.keys();

    while(it.hasNext()){
       String s = it.next().toString();
       System.out.print(s + " " + obj.getString(s) + " ");
    }

输出是:position 1 home {"played":18} team_id 10260

所以它不会读取文件的其余部分。你能告诉我有什么问题吗?还有,为什么home {"played":18}之前打印team_id 10260

4

2 回答 2

4

如果您查看括号的组织方式,您会发现您String实际上包含多个JSON对象,并且在第一个完整的对象后停止构建。

至于你的第二个问题,Iterators 很少有保证的顺序,所以你不能对元素将返回的顺序做出任何假设。

于 2013-05-17T22:33:05.633 回答
2

顺序将取决于使用的Map类型JSONObjectHashMap可能是不确定的,也可能是由密钥的代码点决定的,或者可能是按顺序读取的,具体取决于例如TreeMapLinkedHashMap

除此之外,还有两个对象序列化并且JSONObject显然在第一个对象之后才停止。您可能需要将整个输入包装在一组{ }.

于 2013-05-17T22:34:19.123 回答