解码中的 JSON 字符串Android

标签: json Android
发布时间: 2017/3/4 4:33:21
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 contacts 这是 JSON 的形式。现在我想要解码成字符串数组。有两个数组;names and phones.我使用这段代码︰

    String[] names;
    String[] phones;

    String test = "[{\"name\":\"A\",\"phone\":\"911\"},{\"name\":\"A1\",\"phone\":\"911\"},{\"name\":\"Abid\",\"phone\":\"371812\"}]";
    try {
        JSONArray jsonArray = new JSONArray(test);
        JSONObject jsonObject = new JSONObject(jsonArray.toString());
        Log.i("INFO", String.valueOf(jsonObject.length()));
    } catch (JSONException e) {
        e.printStackTrace();
    }

这将生成一个错误。如何可以添加中的所有名称 names 数组和所有的电话 phones 数组。像 names[0] 分配 A 这是一个第一名称和 phones[0] 分配 911 是对应于第一个名字的第一个电话号码。如何能做那个,我是新的 android

解决方法 1:

问题是,在这条线

JSONObject jsonObject = new JSONObject(jsonArray.toString());

您试图转换 JSONArrayJSONObject ,但你却不能。 如果你想要访问 JSONObject 里面的 JSONArray 你必须遍历每个,或你可以按它的索引获取特定的对象。

    String[] names;
    String[] phones;

    String test = "[{\"name\":\"A\",\"phone\":\"911\"},{\"name\":\"A1\",\"phone\":\"911\"},{\"name\":\"Abid\",\"phone\":\"371812\"}]";
    try {
        JSONArray jsonArray = new JSONArray(test);
        phones = names = new String[jsonArray.length()];
        for(int i = 0 ; i < jsonArray.length(); i ++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            names[i] = jsonObject.getString("name");
            phones[i] = jsonObject.getString("phone");
            Log.i("INFO", "name : " + jsonObject.getString("name") + " , phone : " + jsonObject.getString("phone"));

        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
官方微信
官方QQ群
31647020