当我尝试将其创建为时JsonArray
,我正在尝试使用一些JsonObject
带有移动电话的号码来创建简单商品
["data":{"contactName":"xxxxx", "mobileNumber":"0000}]
格式化成 while
我的json对象长度是1
,我检查了while语句,它的工作正常,没有任何问题,但是每个放置在json对象上的数据都被替换了,长度是1
public static JSONArray getLocalContactsList(ContentResolver cr) throws JSONException {
JSONArray contacts = new JSONArray();
JSONObject contact = new JSONObject();
Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while (phones.moveToNext()) {
final String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phone_number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phone_number = phone_number.replaceAll("\\s+", "").trim();
phone_number = phone_number.replace("-", "").trim();
if (phone_number.startsWith("+")) {
phone_number = phone_number.substring(3, phone_number.length());
phone_number = "0" + phone_number;
}
if (phone_number.startsWith("0")) {
JSONObject c = new JSONObject();
c.put("contactName", name);
c.put("mobileNumber", phone_number);
contact.put("data", c);
}
}
contacts.put(contact);
phones.close();
return contacts;
}
问题是这部分代码:
JSONObject c = new JSONObject();
c.put("contactName", name);
c.put("mobileNumber", phone_number);
contact.put("data", c);
问题是,循环完成所有项目的处理后,您只能将一次联系人添加到JSONArray中。只是contacts.put(contact);
进入一个循环,就像这样:
while (phones.moveToNext()) {
final String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phone_number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phone_number = phone_number.replaceAll("\\s+", "").trim();
phone_number = phone_number.replace("-", "").trim();
if (phone_number.startsWith("+")) {
phone_number = phone_number.substring(3, phone_number.length());
phone_number = "0" + phone_number;
}
if (phone_number.startsWith("0")) {
JSONObject c = new JSONObject();
c.put("contactName", name);
c.put("mobileNumber", phone_number);
contact.put("data", c);
}
// the next line should be inside the loop
contacts.put(contact);
}
如npace所指出的那样,这应该可以修复错误,但不能解决整个问题。考虑使用GSON库,该库将处理将东西转换为JSONObject
s或JSONArray
s的任务
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句