【问题标题】:Android Studio having trouble reading a JSONArrayAndroid Studio 无法读取 JSONArray
【发布时间】:2020-08-22 06:28:55
【问题描述】:

我是 Android Studio 的初学者,我只是在学习如何读取 JSON 文件。我使用 logcat 发现我在声明 JSONArray dataList 的行上遇到了异常。我的代码如下供参考。

try{
            JSONObject jsonObject = new JSONObject(loadJSONFromAsset());
            JSONArray dataList = jsonObject.getJSONArray("eateries");
            //Log.d("test", String.valueOf(dataList.length()));
            for(int i = 0; i < dataList.length(); i++){
                String EateryName = dataList.getJSONObject(i).getString("name");
                EateryList.add(EateryName);
            }
        }catch (JSONException e){
            e.printStackTrace();
            //Log.d("test", "exception");
        }

【问题讨论】:

  • 您遇到了什么异常?
  • 只是一个json异常。当我初始化 json 数组时,我的代码将进入 catch 部分

标签: java android json


【解决方案1】:

按照以下步骤解决您的问题。

  1. 通过代码检查资产文件夹/目录(文件路径必须与 .json 一致)。
  2. 使用 File 对象检查在 dir 中创建/存在的文件(如果没有,则创建文件)。
  3. 通过使用 FileInputStream 读取文件来检查文件大小。
  4. 如果 size > 0 则获取 byte-Array 中的数据并将 byte-Array 转换为字符串。
  5. 现在,您有一个 json 数据字符串。创建 JsonArray(your_string) 并执行您喜欢的进一步操作。
    每个步骤都有一个可用于此堆栈溢出的代码。查找并解决。
    希望对您有所帮助。

【讨论】:

    【解决方案2】:

    检查GrIsHu answer 您只需在项目的根目录中创建 assets 文件夹

    这里是original Link

    String myJsonFileString = Utils.getJsonFromAssets(getApplicationContext(), "your.json");
    Log.i("My data", jsonFileString);
    
    Gson gson = new Gson();
    Type listUserType = new TypeToken<List<User>>() { }.getType();
    
    List<User> users_ = gson.fromJson(myJsonFileString, listUserType);
    for (int i = 0; i < users.size(); i++) {
      Log.i("data", "> Item " + i + "\n" + users.get(i));
    }
    

    浏览原帖

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 2016-06-07
      • 1970-01-01
      • 2019-09-27
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多