以下代码生成org.json.JSONException:eqlocation没有值。 https://jsonformatter.curiousconcept.com/对该字符串没有显示任何错误。
String message="{"eqlocation": [{"lat": 38.3904, "lon": 73.8278}, {"lat": 19.0119, "lon": 95.5838}, {"lat": 12.9046, "lon": 92.2347}, {"lat": 34.1968, "lon": 80.7091}], "cydata": []}";
try {
JSONObject jsonObj = new JSONObject(message);
Log.v("fromjson",jsonObj.get("eqlocation").toString());
}
catch (JSONException e){
e.printStackTrace();
Toast.makeText(getContext(),"No JSON received",Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:0)
saveData()
看起来不错,但是您正在尝试解析run()
数据。
相反,您可以尝试以下操作:
json
注意:但是,初始化Array
的方式不正确。您需要转义引号。
答案 1 :(得分:0)
您需要对字符串中的引号进行转义,并且可以使用解析器简化该过程。
JSONParser parser = new JSONParser();
String message = "{\"eqlocation\":[{\"lat\":38.3904,\"lon\":73.8278},{\"lat\":19.0119,\"lon\":95.5838},{\"lat\":12.9046,\"lon\":92.2347},{\"lat\":34.1968,\"lon\":80.7091}],\"cydata\":[]}";
try {
Object obj = parser.parse(message);
JSONObject obj2 = (JSONObject) obj;
Log.v("fromjson",obj2.get("eqlocation").toString());
}
catch (ParseException pe){
pe.printStackTrace();
}
}
您可以在这里看到它在纯Java中工作:https://repl.it/repls/InvolvedSuperbSupport