0
[

    {
        "description": "My home", 
        "name": "Sweet Home", 
        "point": {
            "lat": 22.890976, 
            "long": 90.459097
        }, 
        "type": 1,
        "cid": "5319197376176516414"
    }

这是我用于解析信息的 json 文件。这是我解析名称和 lng 的代码。

BufferedReader jsonReader = new BufferedReader(new InputStreamReader(this.getResources().openRawResource(R.raw.map)));
        StringBuilder jsonBuilder = new StringBuilder();
        try {
            for (String line = null; (line = jsonReader.readLine()) != null;) {
                jsonBuilder.append(line).append("\n");
            }

            JSONTokener tokener = new JSONTokener(jsonBuilder.toString());
            JSONArray jsonArray = new JSONArray(tokener);

                JSONObject jsonObject = jsonArray.getJSONObject(0);

                String title = jsonObject.getString("name");
                String lhg = jsonObject.getJSONObject("point").getString("lng");
} catch (FileNotFoundException e) {
            Log.e("jsonFile", "file not found");
        } catch (IOException e) {
            Log.e("jsonFile", "ioerror");
        } catch (JSONException e) {
            Log.e("jsonFile", "error while parsing json");
        }
    }

}

它向我展示了一个例外error while parsing json。我该如何解决?我的问题是什么?

4

2 回答 2

5

因为 JSON 对象中的“Point”从不包含名为“lng”的属性

 String lhg = jsonObject.getJSONObject("point").getString("lng")

它确实包含一个名为“long”的

"point": {
            "lat": 22.890976, 
            "long": 90.459097
        }, 

所以获取经度的代码应该是这样的:

 String lhg = jsonObject.getJSONObject("point").getString("long")
于 2013-06-17T11:41:32.020 回答
1
 String lhg = jsonObject.getJSONObject("point").getString("lng")  use "long" instead of lng.
于 2013-06-17T11:46:35.783 回答