我尝试在java中解析JSON字符串,以单独打印各个值。但在运行程序时,我得到以下错误-
Exception in thread "main" java.lang.RuntimeException: Stub!
at org.json.JSONObject.<init>(JSONObject.java:7)
at ShowActivity.main(ShowActivity.java:29)
我的班级看起来像-
import org.json.JSONException;
import org.json.JSONObject;
public class ShowActivity {
private final static String jString = "{"
+ " \"geodata\": ["
+ " {"
+ " \"id\": \"1\","
+ " \"name\": \"Julie Sherman\","
+ " \"gender\" : \"female\","
+ " \"latitude\" : \"37.33774833333334\","
+ " \"longitude\" : \"-121.88670166666667\""
+ " }"
+ " },"
+ " {"
+ " \"id\": \"2\","
+ " \"name\": \"Johnny Depp\","
+ " \"gender\" : \"male\","
+ " \"latitude\" : \"37.336453\","
+ " \"longitude\" : \"-121.884985\""
+ " }"
+ " }"
+ " ]"
+ "}";
private static JSONObject jObject = null;
public static void main(String[] args) throws JSONException {
jObject = new JSONObject(jString);
JSONObject geoObject = jObject.getJSONObject("geodata");
String geoId = geoObject.getString("id");
System.out.println(geoId);
String name = geoObject.getString("name");
System.out.println(name);
String gender=geoObject.getString("gender");
System.out.println(gender);
String lat=geoObject.getString("latitude");
System.out.println(lat);
String longit =geoObject.getString("longitude");
System.out.println(longit);
}
}
让我知道我错过了什么,或者为什么我每次运行应用程序时都会得到这个错误。任何评论都将不胜感激。
7条答案
按热度按时间7vhp5slm1#
看我的评论。当运行 android时,你需要包括完整的org.json library。jar 只包含存根来编译。
此外,必须删除JSON数据中
longitude
后面的两个额外的}
示例。除此之外,
geodata
实际上不是JSONObject
,而是JSONArray
。下面是完全工作和测试的纠正代码:
输出如下:
2vuwiymt2#
要将JSON字符串转换为hashmap,可以使用以下代码:
使用此类:)(处理偶数列表、嵌套列表和json)
w41d8nur3#
看起来对于你的两个对象(在数组内部),你在“经度”后面有一个额外的右大括号。
hmae6n7t4#
this blog这个答案可能会帮助那些要求不同的人。
这是Json字符串
这是如何阅读它
tuwxkamq5#
首先,在每个
array object
之后有一个额外的}
。其次,“geodata”是一个
JSONArray
。因此,您必须将其获取为JSONArray geoObject = jObject.getJSONArray("geodata");
,而不是JSONObject geoObject = jObject.getJSONObject("geodata");
一旦有了
JSONArray
,就可以使用geoObject.get(<index>)
来获取JSONArray
中的每个条目。我使用的是
org.codehaus.jettison.json
。bwitn5fc6#
下面是一个对象的示例,对于您的情况,您必须使用JSONArray。
我没时间,但我想给你出个主意,如果你还是做不到,那我就帮你。
fnx2tebb7#
如果在每个对象中有一个额外的“}”,您可以这样编写json字符串: