2016-07-28 45 views
0

一直在这个网站上看了一会儿,我没有得到任何地方。如何解决,JSONException:没有值的“1”

我创建它通过PHP得到的值的列表从MySQL数据库的Android应用程序,并返回一个JSON对象编码的结果:

{"error":false,"values":{"1":{"name":"This is a string"}, "2":{...}}} 

我检索JSON对象的Java一样所以:

JSONObject jObj = new JSONObject(response); 
boolean error = jObj.getBoolean("error"); 

if (!error) { 
    JSONObject values = jObj.getJSONObject("values"); 
    Iterator<?> keys = values.keys(); 

    while(keys.hasNext()) { 
     String key = (String)keys.next(); 
     JSONObject value = jObj.getJSONObject(key); 
     ... 
    } 

它在那里,我得到异常的椭圆形前点:

org.json.JSONException: No value for "1" 

我在做什么完全愚蠢的事情,或者什么,一切看起来都对我好。我已经尝试了多种不同的东西,但仍然得到同样的问题。 我最终想要做的是获取名称obj并将其添加到字符串列表。但我似乎无法超越这一点。

任何帮助或推动正确的方向将不胜感激。

+1

你应该阅读使用__values.getJSONObject(键)值__,而不是从__jObj__。 – harism

+0

你有通过PHP API获取数据吗?因为最好将值设置为Array而不是Object,因此您可以轻松地对其进行迭代。 –

+0

我已经发布解决方案请尝试。 –

回答

1
JSONObject value = jObj.getJSONObject(key); 

替换

JSONObject value = values.getJSONObject(key); 
+0

我觉得像一个白痴..干杯回报我的理智:) – smurfMT

0
JSONObject jObj = new JSONObject(response); 
boolean error = jObj.getBoolean("error"); 

if (!error) { 
    JSONObject values = jObj.getJSONObject("values"); 
    Iterator<?> keys = values.keys(); 

    while(keys.hasNext()) { 
     String key = (String)keys.next(); 
     JSONObject value = values.getJSONObject(key); 
     ... 
    }