Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析JSON字符串_Java_Json - Fatal编程技术网

Java 解析JSON字符串

Java 解析JSON字符串,java,json,Java,Json,我有一个JSON文件,它被读取并存储在一个名为jsonString的字符串中,它看起来像这样: { "position":1, "team_id":10260, "home": { "played":18, }, }, { "position":2, "team_id":8456, "home": { "played":12, }, }, 解析代码: JSONObject obj = new JSONObject(jsonString)

我有一个JSON文件,它被读取并存储在一个名为
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) + " ");
    }
输出为:
1号位置主场{“比赛”:18}球队id 10260


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

如果您查看括号的组织方式,您可以看到您的
字符串实际上包含多个
JSON
对象,并且在第一个完整的对象之后停止构造


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

如果你看一下括号的组织方式,你会发现你的
字符串
实际上包含几个
JSON
对象,第一次完工后,施工停止


至于你的第二个问题,
迭代器
s很少有保证的顺序,因此你不能对元素返回的顺序做出任何假设。

顺序将取决于
JSONObject
使用的
Map
类型;可能是不确定的,也可能是由键的代码点决定的,或者可能是按顺序读取的,具体取决于,例如,
HashMap
TreeMap
LinkedHashMap


除此之外,还有两个对象被序列化,
JSONObject
显然在第一个对象之后就停止了。您可能需要将整个输入包装在一组
{
}
中,顺序取决于
JSONObject
使用的
Map
类型;可能是不确定的,也可能是由键的代码点决定的,或者可能是按顺序读取的,具体取决于,例如,
HashMap
TreeMap
LinkedHashMap


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

中,因此如何移动到下一个
JSON
对象?您应该确保输入遵循
JSON
标准格式。如何做到这一点取决于您从何处获取indata。看起来您拥有的是一个数组,在这种情况下,您需要在数据的开头添加一个
[
,在数据的结尾添加一个
]
。它实际上有
[]
,但引发了一个异常:
语法错误,插入“}”以完成块
,因此我删除了它们。我想我明白了。谢谢。那么我如何移动到下一个
JSON
对象呢?您应该确保输入遵循
JSON
标准格式。如何做到这一点取决于您从何处获取indata。看起来您拥有的是一个数组,在这种情况下,您需要在数据的开头添加一个
[
,在数据的结尾添加一个
]
。它实际上有
[]
,但引发了一个异常:
语法错误,插入“}”以完成块
,因此我删除了它们。我想我明白了。谢谢