1

因此,我正在处理来自 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应用程序中处理它,当我有一个名为say 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:options[0].name 没有值

我在这里有点迷路了。

4

3 回答 3

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"));
}
于 2013-07-15T06:15:38.920 回答
0

您需要创建JSONArray并获得价值

JSONArray jsonArr = jsn.getJSONArray(TAG);
String name=jsonArr.get(0).getString("name");
于 2013-07-15T06:14:07.230 回答
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");

 }
于 2013-07-15T06:14:58.393 回答