Android使用JsonObject内容创建JsonArrays

马赫迪·皮什奎

当我尝试将其创建为时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);
尤里·费多罗夫(Yury Fedorov)

问题是,循环完成所有项目的处理后,您只能将一次联系人添加到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库,该库将处理将东西转换为JSONObjects或JSONArrays的任务

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章