我想从JSON响应中只获取一些选定的值。例如,如果JSON包含100个字符串值,那么我需要从该100个值中取出以@符号开头的值。
我该怎么做?
以下是我的JSON,
[{"Obj" :
{ "ID":"11",
"NAME":"XYZ",
"GENDER":"M"
}
{ "ID":"11",
"NAME":"@XYZ",
"GENDER":"M"
}
{ "ID":"11",
"NAME":"@XYZ",
"GENDER":"M"
}
}]
这里我需要获取具有@符号
的名称答案 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();
}