我在Android中有一个项目,我在这里有这个JSON,我需要解析所以我可以使用数据:(我试图在JSONLint.com验证我的JSON,这一切都很好)
{
"traces": [
"{\"lat\": \"42.842097\", \"lng\": \"-31.258422\", \"idTrace\": \"444e8079\"}",
"{\"lat\": \"56.842097\", \"lng\": \"-73.258422\", \"idTrace\": \"088b591a\"}"
]
}
问题是当我尝试在JSONArray中获取2个JSONObject时,我总是遇到错误。
以下是我的代码片段:
(...)
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;)
{
builder.append(line).append("\n");
}
JSONObject result = new JSONObject(builder.toString());
JSONArray list = result.getJSONArray("traces");
try{
for (int i = 0; i < list.length(); i++)
{ //this is where I get the error "JSONArray[0] is not a JSONObject"
JSONObject jsonObject = list.optJSONObject(i);
//String id = jsonObject.getString("idTrace");
//String lat = jsonObject.getString("lat");
//String lng = jsonObject.getString("lng");
(...)
}
(...)
我经常搜索很多问题,但是人们似乎和我做的完全一样......我找不到它为什么不起作用的原因!
感谢您的帮助!
答案 0 :(得分:1)
这个JSON是否来自您控制的API?我认为破坏事物的是JSONArray中项目的引用 - JSON应该如下所示:
{"traces": [
{"lat": "42.842097", "lng": "-31.258422", "idTrace": "444e8079"},
{"lat": "56.842097", "lng": "-73.258422", "idTrace": "088b591a"}
]}
请注意,每个JSONObject都没有引号。你现在拥有的更像是一串字符串......
答案 1 :(得分:0)
这是你的拼写错误,
liste.optJSONObject(i); this should be list.optJSONObject(i);