Java解析JSON异常
我正在尝试使用Java解析JSON字符串 这是我目前的代码:Java解析JSON异常,java,json,parsing,Java,Json,Parsing,我正在尝试使用Java解析JSON字符串 这是我目前的代码: JSONObject obj = new JSONObject(Connection.getDataWOProxy(proxyUseQ)); JSONArray arr = obj.getJSONArray("result"); for (int i = 0; i < arr.length(); i++) { System.out.println(arr.getInt(i)); }
JSONObject obj = new JSONObject(Connection.getDataWOProxy(proxyUseQ));
JSONArray arr = obj.getJSONArray("result");
for (int i = 0; i < arr.length(); i++) {
System.out.println(arr.getInt(i));
}
^这一行初始化我的JSONObject,给它一个字符串。效果很好
JSONArray arr = obj.getJSONArray("result");
^在这里,我想让它访问“result”
树-如果我做对了,它也可以工作现在,如果我理解正确,我的所有信息都应该保存在该数组中,对吗?
for (int i = 0; i < arr.length(); i++) {
System.out.println(arr.getInt(i));
}
我的JSON字符串:
{
"result": [
{
"number": "1234",
"short_description": "TEST",
"priority": "4 - Low",
"caller_id": "Some, User"
},
{
"number": "12345",
"short_description": "TEST 2",
"priority": "4 - Low",
"caller_id": "Some, User2"
}
]
}
我做错了什么?我是JSON新手。谢谢。这是一个JSON对象数组;它们无法转换为
int
。如果要访问当前对象上的特定字段,可以这样做:
System.out.println(arr.getJSONObject(i).getString("short_description"));
它是一个JSON对象数组;它们无法转换为
int
。如果要访问当前对象上的特定字段,可以这样做:
System.out.println(arr.getJSONObject(i).getString("short_description"));
是的,因为它不是字符串或数字,而是它的整体
{
"number": "1234",
"short_description": "TEST",
"priority": "4 - Low",
"caller_id": "Some, User"
},
要得到这个号码,你必须
arr.getJSONObject(i).getString("number");
是的,因为它不是字符串或数字,而是它的整体
{
"number": "1234",
"short_description": "TEST",
"priority": "4 - Low",
"caller_id": "Some, User"
},
要得到这个号码,你必须
arr.getJSONObject(i).getString("number");
JSONArray[0]不是一个数字,因为它是一个对象。 根据JSON字符串,您有一个名为“result”的数组,该数组包含两个元素。 arr.getInt(i)将JSONArray[0]作为JSONObject返回。 你应该打电话
JSONObject obj=JSONArray.getJSONObject(i)
然后你应该打电话
obj.getInt(i)
请注意,json字段通常是字符串,而不是整数。JSONArray[0]不是数字,因为它是一个对象。 根据JSON字符串,您有一个名为“result”的数组,该数组包含两个元素。 arr.getInt(i)将JSONArray[0]作为JSONObject返回。 你应该打电话
JSONObject obj=JSONArray.getJSONObject(i)
然后你应该打电话
obj.getInt(i)
请注意,您的json字段通常是字符串,而不是整数。arr.getInt(i)是错误的,它的第一个条目是JSONObject类型的“result”键,因此JSONObject上的getInt无效
下面是正确的程序,
只得到描述
JSONArray arr = obj.getJSONArray("result");
for (int i = 0; i < arr.length(); i++) {
JSONObject entry = arr.getJSONObject(i);
System.out.println(entry.getString("short_description"));
}
打印每个键和值
JSONArray arr = obj.getJSONArray("result");
for (int i = 0; i < arr.length(); i++) {
JSONObject entry = arr.getJSONObject(i);
Iterator<String> keyIter= entry.keys();
System.out.println("---------------->Entry :" + (i+1));
while(keyIter.hasNext()){
String key = keyIter.next();
System.out.print(key + " ==> ");
System.out.print(entry.get(key)+"\n");
}
}
arr.getInt(i)错误,它的第一个条目是类型为JSONObject的“result”键,因此JSONObject上的getInt无效
下面是正确的程序,
只得到描述
JSONArray arr = obj.getJSONArray("result");
for (int i = 0; i < arr.length(); i++) {
JSONObject entry = arr.getJSONObject(i);
System.out.println(entry.getString("short_description"));
}
打印每个键和值
JSONArray arr = obj.getJSONArray("result");
for (int i = 0; i < arr.length(); i++) {
JSONObject entry = arr.getJSONObject(i);
Iterator<String> keyIter= entry.keys();
System.out.println("---------------->Entry :" + (i+1));
while(keyIter.hasNext()){
String key = keyIter.next();
System.out.print(key + " ==> ");
System.out.print(entry.get(key)+"\n");
}
}
您可以添加一个解释,说明您从原始代码中修复的问题吗?这是一个示例,说明如何使用完整的JSON来修复代码片段。它还展示了如果您使用MongoDB,如何使用BSON。您可以添加一个解释,说明您从原始代码中修复的问题吗?这是一个示例,说明了如何使用完整的JSON(仅适用于代码片段)。它还展示了如果您使用MongoDB,如何使用BSON。