>我得到了一个jsonarray:
[
{
"ean": "8020079127",
"nr": "100",
"name": "Name1"
},
{
"ean": "8026180222",
"nr": "4",
"name": "Name2"
},
{
"ean": "6577426092",
"nr": "1",
"name": "Name3"
}
]
我需要"nr"的值,具体取决于"ean"表示:我得到了 ean 8026180222(作为字符串),需要来自"nr"的值(这里是"4")。我怎样才能得到它?无需迭代整个数组即可吗?
谢谢
试试这个:
// Use a map to store ean,nr (as key/value)
HashMap<String, String> jsonMap = new HashMap<String, String>();
// Load the data from json
JSONArray jsonArray= new JSONArray(yourJsonString);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObj = jsonArray.getJSONObject(i);
String ean = jsonObj.getString("ean");
String nr = jsonObj.getString("nr");
String name = jsonObj.getString("name");
jsonMap.put(ean, nr); // here you put ean as key and nr as value
}
要检索特定 ean 的 nr 值,只需调用: jsonMap.get(yourEAN);
示例:String nr = jsonMap.get("8026180222");
List<NameValuePair> params = new ArrayList<NameValuePair>();
JsonObject json = jsonParser.makeHttpRequest(url, "GET", params);
Log.d("Tag", json.toString());
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
JSONArray jsnObj;
try {
jsnObj = json
.getJSONArray(TAG_ARRAY);
JSONObject obj = jsnObj
.getJSONObject(1);
String nr = obj.getString(TAG_NR);
}
Catch(Exception ex){}
}
}
如果你想要数组,你可以在json数组中使用循环......希望会有所帮助
只需定义
private static final String TAG_SUCCESS = "success";
private static final String TAG_NR = "nr";
private static final String TAG_ARRAY = "array_name";