无法解析JSON文件

时间:2017-06-25 15:39:56

标签: android json

我试图解析这个JSON文件,但是我得到了一个我理解但却不知道如何找到解决方法的错误

JSONArray locations = new JSONArray(jsonString);

错误

Json parsing error: Value [{"lon":8.6520691,"type":"fuel","address":"Frankfurter Straße 65","lat":49.8848387,"name":"Esso"},{
.."lon":8.6419863,"type":"fuel","address":"Rüdesheimer Straße 114","lat":49.8540121,"name":"Aral Tankstelle"},{"lon":8.6468131,"type":"fuel","address":"Heidelberger Straße 55-59","lat":49.8614199,"name":"Total"},{"lon":8.6311635,"type":"fuel","address":"Pallaswiesenviertel Pallaswiesenstraße","lat":49.8847555,"name":"Firma Karaahmetaglu"},{"lon":8.6429677,"type":"fuel","address":"Pallaswiesenstraße 85","lat":49.8825735,"name":"Shell"},{"lon":8.6443997,"type":"fuel","address":"Johannesviertel Kasinostraße","lat":49.8796515,"name":"Jet"},{"capacity":90,"lon":8.647085,"type":"pub","address":"Mollerstadt Saalbaustraße","lat":49.8714409,"name":"Unikum"}] of type org.json.JSONArray cannot be converted to JSONObject

已更改

if(c.has("icon"){
icon = c.getString("icon");
}else{
icon = "";
}

if(c.has("icon"){
icon = c.getString("icon");
}else{
icon = "@drawable/seekbarthumb1";
}

解决

1 个答案:

答案 0 :(得分:1)

json文件的根对象应该是json对象,您可以使用名为"data"的列表创建一个标记。一些解析器可能允许它,但不建议使用它。如果您无法更改文件,只需解析"{ \"file\": " + jsonStr + "}"并使用其成员文件。

修改

应支持作为根对象的数组(您正在编写代码,因为根对象不是数组(JSONArray)而是对象(JSONObject),但它是一个数组),字符串或数字不是始终支持。 只需更改解析字符串的类型:

JSONObject jsonObject = new JSONObject(jsonStr);
JSONArray locations = jsonObject.getJSONArray("");

JSONArray locations = new JSONArray(jsonStr);

错误发生在第一行,并由解析器产生,因为它需要一个对象而不是一个数组。