我正在尝试在 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);
}
}
让我知道我缺少什么,或者每次运行应用程序时都会出现该错误的原因。任何意见将不胜感激。
原文由 AKIWEB 发布,翻译遵循 CC BY-SA 4.0 许可协议
见我的 评论。您需要在运行时包含完整的 org.json 库,因为 android.jar 仅包含要编译的存根。
此外,您必须在 --- 之后删除 JSON 数据中额外的
}
longitude
两个实例。除此之外,
geodata
实际上不是JSONObject
而是JSONArray
。这是完全工作且经过测试的更正代码:
这是输出: