当我尝试将其创建为
时,我正在尝试使用一些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);
答案 0 :(得分:3)
问题是在循环完成处理所有项目之后,只向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
或JSONArray
的任务