如何parsingAndroid中的JSON对象

我有一些问题从一个JSON对象拉值。 这是我的代码

try { JSONObject json = new JSONObject(result); JSONObject json2 = json.getJSONObject("results"); test = json2.getString("name"); } catch (JSONException e) { e.printStackTrace(); } 

test被声明为一个String 。 代码运行时显示为null 。 如果我将鼠标hover在debugging模式下的json2 ,我可以看到对象中的所有值和名称。

我也试过了

 test = json2.length(); 

这返回test = 0 。 即使当我将鼠标hover在json2对象上时,也可以读取对象内的值。

这里是一个我将使用的JSONstring的例子。

 { "caller":"getPoiById", "results": { "indexForPhone":0, "indexForEmail":"NULL", "indexForHomePage":"NULL", "indexForComment":"NULL", "phone":"05137-930 68", "cleanPhone":"0513793068", "internetAccess":"2", "overnightStay":"2", "wasteDisposal":"2", "toilet":"2", "electricity":"2", "cran":"2", "slipway":"2", "camping":"2", "freshWater":"2", "fieldNamesWithValue":["phone"], "fieldNameTranslations": ["Telefon"], "id":"1470", "name":"Marina Rasche Werft GmbH & Co. KG", "latitude":"52.3956107286487", "longitude":"9.56583023071289" } } 

Solutions Collecting From Web of "如何parsingAndroid中的JSON对象"

最后,我通过使用JSONObject.get而不是JSONObject.getString来解决它,然后将test JSONObject.getString转换为String

 private void saveData(String result) { try { JSONObject json= (JSONObject) new JSONTokener(result).nextValue(); JSONObject json2 = json.getJSONObject("results"); test = (String) json2.get("name"); } catch (JSONException e) { e.printStackTrace(); } } 

在你的JSON格式中,它没有启动JSON对象

喜欢 :

 { "info" : <!-- this is starting JSON object --> { "caller":"getPoiById", "results": { "indexForPhone":0, "indexForEmail":"NULL", . . } } } 

以上Json以info作为JSON对象开始。 所以在执行时:

 JSONObject json = new JSONObject(result); // create JSON obj from string JSONObject json2 = json.getJSONObject("info"); // this will return correct 

现在,我们可以访问result字段:

 JSONObject jsonResult = json2.getJSONObject("results"); test = json2.getString("name"); // returns "Marina Rasche Werft GmbH & Co. KG" 

我认为这是失踪,所以这个问题解决了,而我们使用JSONTokener像你的答案。

你的回答非常好。 只是我想我添加这个信息,所以我回答

谢谢

 JSONArray jsonArray = new JSONArray(yourJsonString); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj1 = jsonArray.getJSONObject(i); JSONArray results = patient.getJSONArray("results"); String indexForPhone = patientProfile.getJSONObject(0).getString("indexForPhone")); } 

更改为JSONArray,然后转换为JSONObject。