为什么以下字符串显示JSONException?

时间:2018-10-19 19:43:26

标签: java android json

以下代码生成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();
        }

2 个答案:

答案 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