【问题标题】:JSON Parsing of JSON Objects in androidandroid中JSON对象的JSON解析
【发布时间】:2017-05-27 09:04:49
【问题描述】:

我有一个类似的 JSON,

 {

 "Area1": "areacode1",
 "Area2": "areacode2",
 "Area3" : "areacode3"

 }

我想解析 json 并将“区域”迭代到 autocompletetextview, 我的代码是,

//从本地文件读取JSON

public String loadJSONFromAsset() {
    String json = null;
    try {

        InputStream is = getAssets().open("arealist.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();
        return null;
    }
    return json;

}

//解析和迭代json...

    try {
        JSONObject obj = new JSONObject(loadJSONFromAsset());
           Iterator<String> keys= obj.keys();
        while (keys.hasNext())
        {
            String keyValue = (String)keys.next();
            String valueString = obj.getString(keyValue);
            Log.d("Details-->",valueString);
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

我收到错误为“类型不匹配:无法将 JSONObject 转换为 JSONArray”,我想知道如何将 JSONObject 转换为字符串并迭代到 List。我是 android 新手,所以很困惑如何继续 请帮助,在此先感谢。

【问题讨论】:

  • 你确定你的 json 返回这个响应吗?

标签: android json


【解决方案1】:

尝试像这样读取 arealist.json

InputStream inputStream = getContext().getAssets().open("arealist.json");
                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));


 String line;
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null){
                sb.append(line).append("\n");
            }

            //parse JSON and store it in the list
            String jsonString =  sb.toString();

并在 JSONobject 中使用这个 jsonString

【讨论】:

    【解决方案2】:

    通过以下代码调试给定的json后:

        String json = "{\n" +
                "\n" +
                " \"Area1\": \"areacode1\",\n" +
                "  \"Area2\": \"areacode2\",\n" +
                "  \"Area3\" : \"areacode3\"\n" +
                "\n" +
                " }";
        try {
            JSONObject obj = new JSONObject(json);
            Iterator<String> keys= obj.keys();
            while (keys.hasNext())
            {
                String keyValue = (String)keys.next();
                String valueString = obj.getString(keyValue);
                Log.d("Details-->",valueString);
            }
    
    
    
        } catch (JSONException e) {
            e.printStackTrace();
        }
    

    我意识到你读取哪个json的方式没有任何问题。问题是从loadJSONFromAsset 返回的字符串。您必须纠正该方法的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 2021-10-30
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多