【问题标题】:Reading data from a json file in Android and put it in an array从Android中的json文件中读取数据并将其放入数组中
【发布时间】:2017-07-19 20:16:09
【问题描述】:

如果我有这样的 json 文件

{
"users": [{
        "name": "aa",
        "address": "a"
    },
    {
        "name ": "bb",
        "address": "b"
    },
    {
        "name": "cc",
        "address": "c"
    },

]}

如何读取这个 json 文件并将所有名称放在 android 中的 String 数组中

我使用了这段代码,但在第二个循环中它捕获了异常

public void loadJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getAssets().open("data.json");
        int size = is.available();
        byte[] buffer = new byte[size];
        is.read(buffer);
        is.close();
        json = new String(buffer, "UTF-8");
    } catch (IOException ex) {
        ex.printStackTrace();
    }
    try {
        JSONObject obj = new JSONObject(json);
        JSONArray m_jArry = obj.getJSONArray("users");

        for (int i = 0; i < m_jArry.length(); i++) {
            JSONObject jo_inside = m_jArry.getJSONObject(i);
            names.add(jo_inside.getString("name"));
            images.add(jo_inside.getString("address"));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

【问题讨论】:

  • 发布异常....日志
  • 发布异常堆栈跟踪。
  • 名称@rafsanahmad007 没有值

标签: android json file


【解决方案1】:

该 Json 对象数组中的第二个元素在名称旁边有空格,您可以通过 2 种方法解决。

    1. 作为您的后端人员来改变这一点
    1. 你这样解决问题,

像这样把getString改成optString

for (int i = 0; i < m_jArry.length(); i++) {
            JSONObject jo_inside = m_jArry.getJSONObject(i);

            String name = jo_inside.optString("name");

            if(TextUtils.isEmpty(name)) {
                name = jo_inside.optString("name "); // that object have space
            }
        names.add(name);
        images.add(jo_inside.getString("address"));
    }

【讨论】:

    【解决方案2】:

    您的Json 文件包含错误格式的 JSON。

    从最后一个数组元素中删除,

        {
            "name": "cc",
            "address": "c"
        },
    

    有效的 Json 应该是:

     {
        "users": [{
                "name": "aa",
                "address": "a"
            },
            {
                "name": "bb",
                "address": "b"
            },
            {
                "name": "cc",
                "address": "c"
            }
    
        ]
    }
    

    【讨论】:

    • 很乐意提供帮助...如果答案有效,欢迎您将其标记为正确。谢谢
    【解决方案3】:

    您的 JSON 字符串有问题。在第二个 JSON name 字段中有额外的空间。最后一个 JSON }, 之后还有 ,

    {
        "users": [{
                "name":"aa",
                "address":"a"
            },
            {
                "name":"bb",
                "address":"b"
            },
            {
                "name":"cc",
                "address":"c"
            }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多