Java 解析JSON字符串
我有一个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)
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。看起来您拥有的是一个数组,在这种情况下,您需要在数据的开头添加一个[
,在数据的结尾添加一个]
。它实际上有[]
,但引发了一个异常:语法错误,插入“}”以完成块
,因此我删除了它们。我想我明白了。谢谢