我有一个字符串[{Label_0=Mobile, Phone_0=+212131231}]
,存储在ArrayList
内部HashMap
,我需要将其分配到另一个Arraylist
获取值,而是得到一个语法错误
List<HashMap<String, String>> phonesArr = new ArrayList<HashMap<String, String>>();
HashMap<String, String> phoneDict = new HashMap<String, String>();
phoneDict.put(String.format("Label_%d", locali1),PTYPE);
phoneDict.put(String.format("Phone_%d", locali1),phoneNumber);
phonesArr.add(phoneDict);
我之所以将其存储在数组中是有原因的,因为一个联系人的电话号码可能是多个。
ArrayList<HashMap<String, String>> _allPeoplesDictArr = new ArrayList<HashMap<String, String>>();
HashMap<String, String> personDict = new HashMap<String, String>();
personDict.put("PhoneNumbers", phonesArr.toString()) //// Value stored as array to string
// [{Label_0=Mobile, Phone_0=+212131231}]
_allPeoplesDictArr.add(personDict);
for (int j = 0; j < _allPeoplesDictArr.size(); j++) {
String localPhoneStr = _allPeoplesDictArr.get(j)
.get("PhoneNumbers");
Log.d("localPhoneStr", localPhoneStr); /// I dont want to retrieve it as string
List<HashMap<String, String>> localPhoneArr = _allPeoplesDictArr.get(j).get("PhoneNumbers"); //// I want to retrieve it as array but getting syntax error.
if (localPhoneArr.size() > 0) {
for (int k = 0; k < localPhoneArr.size(); k++) {
HashMap<String, String> userDict = new HashMap<String, String>();
userDict.put(
"label",
localPhoneArr.get(k).get(
String.format("Label_%d", k)));
userDict.put(
"value",
localPhoneArr.get(k).get(
String.format("Phone_%d", k)));
}
}
}
I am getting syntax error at grabing values that is now as a JSON `[{Label_0=Mobile, Phone_0=+212131231}]`
List<HashMap<String, String>> localPhoneArr = _allPeoplesDictArr.get(j).get("PhoneNumbers");
该行为List<HashMap<String, String>> localPhoneArr = _allPeoplesDictArr.get(j).get("PhoneNumbers");
您提供语法错误,因为它是一个String
。如果要使用Array
它,则必须解析JSON String。您可以在这里找到文档
它应该看起来像这样
String localPhoneStr = _allPeoplesDictArr.get(j).get("PhoneNumbers");
JSONArray phoneArray = new JSONArray(localPhoneStr);
for(int i=0; i<phoneArray.length(); i++){
JSONObject phone = phoneArray.getJSONObject(i);
userDict.put("label", phone.getString(String.format("Label_%d", i)));
userDict.put("value", phone.getString(String.format("Phone_%d", i)));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句