我有以下字符串
[{"SUBSCRIBERID":"151-52-049","LONG":"46.69127274","LAT":"24.70912743"},{"SUBSCRIBERID":"151-29-016","LONG":46.69570000","LAT":"24.70770000"}]
我正在将此String转换为JSONArray
JSONArray jsonArrr = new JSONArray(String);
然后循环数组并获取JSONObject
for (int h = 0; h < jsonArrr.length(); h++) {
jsonObj = jsonArrr.getJSONObject(h);
Iterator<String> iter = jsonObj.keys();
Object valuee = "";
String key = iter.next();
Log.e(TAG, "key is: " + key);
try {
valuee = jsonObj.get(key);
Log.e(TAG, "key: " + key + "---value: " + valuee); //on htc key is SUBSCRIBERID and its value while on samsung key is LONG and its valuee!!
} catch (JSONException e) {
Log.e(TAG,"SOME ERROR: "+e);
}
在此for循环中,检索的值是每个对象中的第一个值。 在我的HTC手机上,第一个值正确显示为在三星设备上购买SUBSCRIBERID的值,第一个值显示为LONG。
请任何帮助将不胜感激!!
答案 0 :(得分:2)
未定义键的顺序。因此,如果您在不同设备上执行代码,您可能会看到不同顺序的密钥。 REF
返回此对象中String名称的迭代器。返回的迭代器支持remove,这将从该对象中删除相应的映射。如果在返回迭代器后修改了此对象,则迭代器的行为是未定义的。键的顺序是未定义的。
答案 1 :(得分:0)
在评论及上述回答
中提及时不使用Iterator
for (int h = 0; h < jsonArrr.length(); h++) {
jsonObj = jsonArrr.getJSONObject(h);
// Iterator<String> iter = jsonObj.keys();
// Object valuee = "";
// String key = iter.next();
// Log.e(TAG, "key is: " + key);
// try {
// valuee = jsonObj.get(key);
// Log.e(TAG, "key: " + key + "---value: " + valuee); //on htc key is SUBSCRIBERID and its value while on samsung key is LONG and its valuee!!
// } catch (JSONException e) {
// Log.e(TAG,"SOME ERROR: "+e);
// }
// use this code
String value = jsonObj.getString("SUBSCRIBERID");
Long lat = jsonObj.getLong("LAT");
Long long = jsonObj.getLong("LONG");
Log.d("json","subscribed:"+value+",lat"+lat+",long:"+long);
答案 2 :(得分:0)
var label = $("label");
$("label").each(function () {
$(this).html("Your" + $(this).text())
});
尝试运行此