如何从一堆JSON响应中仅选择特定值?

时间:2014-01-08 05:49:33

标签: android json

我想从JSON响应中只获取一些选定的值。例如,如果JSON包含100个字符串值,那么我需要从该100个值中取出以@符号开头的值。

我该怎么做?

以下是我的JSON,

[{"Obj" :    
    { "ID":"11",
      "NAME":"XYZ",
      "GENDER":"M" 
    }
    { "ID":"11",
      "NAME":"@XYZ",
      "GENDER":"M" 
    }
    { "ID":"11",
      "NAME":"@XYZ",
      "GENDER":"M" 
    }

}]

这里我需要获取具有@符号

的名称

3 个答案:

答案 0 :(得分:2)

您可以使用以下方法获取以@:

开头的名称
JSONObject jsonObject = new JSONObject(response);// u can change it as per your need
JSONArray jArray = jsonObject.getJSONArray("Obj");// if your `Obj` is an JsonArray
for (int i = 0; i < jArray.length(); i++) {
  String json_name = jArray.getJSONObject(i).getString("NAME");
  if(json_name.startsWith("@"))
  {
    Log.d(TAG,"It start with @");
  }
}

答案 1 :(得分:0)

试试如下:

 private void parseJSON(String json) {
    try {

        JSONArray items = new JSONArray(<your Json Response>);
        for (int i = 0; i < items.length(); i++) {

            JSONObject item = items.getJSONObject(i);
            System.err.println("Object---" + item.getString("Obj"));
            JSONObject obj=item.getJSONObject("Obj");
            for (int j = 0; j < obj.length(); j++) {
                String Name=obj.getString("NAME");
                 if(obj.getString("NAME").toString().contains("@"))
                  {
                    Log.d("Name starts with-->", Name);
                 }
                else
                 {  
                      Log.d("Name does not start with-->", Name);
                 }

            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

答案 2 :(得分:0)

试试这个。

首先,这不是一个有效的json,可能是json正确的格式

[
    {
        "Obj": [
            {
                "ID": "11",
                "NAME": "XYZ",
                "GENDER": "M"
            },
            {
                "ID": "11",
                "NAME": "@XYZ",
                "GENDER": "M"
            },
            {
                "ID": "11",
                "NAME": "@XYZ",
                "GENDER": "M"
            }
        ]
    }
]

如果您的回复如上所述,请尝试以下代码,这可能会对您有所帮助。

      try {
            JSONArray jsoArray = new JSONArray(json);


            JSONArray JobjArray = jsoArray.getJSONObject(0).getJSONArray("Obj");
                for(int i=0; i < JobjArray.length(); i++)
                {                   
                    JSONObject Jobj = JobjArray.getJSONObject(i);
                    Iterator<String> iter = Jobj.keys();
                    while (iter.hasNext()) {
                        String key = iter.next();
                        Log.v("key--", key);
                        try {
                            Object value = Jobj.get(key);
                            Log.v("value--", ""+value);
                            String str_value = value.toString().trim();
                            if(str_value.startsWith("@"))
                            {
                                Log.d(""+str_value,"value started with @");
                            }
                        } catch (JSONException e) {
                            // Something went wrong!
                            e.printStackTrace();
                        }
                    }
                }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }