如何访问从JSON对象返回的值

时间:2013-07-15 06:06:54

标签: android json

所以我正在处理来自JSON对象的返回值,并且我正在尝试返回其中一个键的值。所以我得到的JSON对象就是这个。

{"options":[{"picture":"http:\/\/example.com\/1.png", contact_id="1", name="Tom"}, {"picture":"http:\/\/example.com\/2.png", contact_id="2", name="Jess"}]}

现在我在Android应用程序中处理它,当我有一个名为TAG的最终静态字符串设置为选项时

private static final String TAG = "options";

我用来记录像这样的json值

Log.d("Friends name", jsn.getString(TAG));

我得到了第一个结果

{"options":[{"picture":"http:\/\/example.com\/1.png", contact_id="1", name="Tom"},      {"picture":"http:\/\/example.com\/2.png", contact_id="2", name="Jess"}]}

但是我只是试图访问这些名字而且我真的不知道该怎么做。

我尝试将TAG设置为options[0].name以获取第一个名称,但它给了我一个错误

  

JSONException:没有值[0] .name

的值

我在这里有点迷失。

3 个答案:

答案 0 :(得分:3)

如果您正在谈论JSON,那么您发布的字符串不是有效的JSON。

应该如下。

{
    "options": [
        {
            "picture": "http://example.com/1.png",
            "contact_id": "1",
            "name": "Tom"
        },
        {
            "picture": "http://example.com/2.png",
            "contact_id": "2",
            "name": "Jess"
        }
    ]
}

然后在下面的代码段中写下来获取名称。

JSONObject android = new JSONObject(json_string);

JSONArray array = android.getJSONArray("options");

for (int i = 0; i < array.length(); i++) {
    Log.i("name", array.getJSONObject(i).getString("name"));
}

答案 1 :(得分:0)

您需要创建JSONArray并将值设为

JSONArray jsonArr = jsn.getJSONArray(TAG);
String name=jsonArr.get(0).getString("name");

答案 2 :(得分:0)

JSONObject object=new JSONObject(Your String...);
JsonArray jArray=object.getJsonArray("options");
for(int i=0;i<jArray.length;i++)
{
  JSONObject jObject=jArray.getJSONObject(0);
 String picture=jObject.getString("picture"); 
 int id=JObject.getInt("contact_id");
  String name=JObject.getString("name");

 }