尝试捕获代码读取JSON文件Android

时间:2017-03-17 22:37:02

标签: java android json try-catch

尝试读取本地JSON文件时遇到严重问题。我现在已经到处寻找了很多天,我能得到的最好和最远的是从法赞的回答中复制。 Reading a json file in Android

为什么Android Studio不允许我在这里生成第二个try-catch代码块?

非常感谢帮助和建议!!

这是My code

public String loadJSONFromAsset() {
    String json = null;
    try {
        InputStream is = getAssets().open("names.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;
}

String jsonString = loadJSONFromAsset();

try {
    JSONObject json = new JSONObject(jsonString);
    JSONObject jObject = json.getJSONObject("female");
    JSONObject jObject2 = jObject.getJSONObject("adult");
    String name = jObject2.toString();

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

 }

1 个答案:

答案 0 :(得分:1)

  

为什么Android Studio不会让我生成第二个   try-catch代码块在这里?

简单地说,因为你的代码不在方法中。

执行以下操作可以解决错误。

public void someMethodIdentifier(){ // doesn't have to be void return type, you know better than me what type you want to return.
    String jsonString = loadJSONFromAsset();
    try {
       JSONObject json = new JSONObject(jsonString);
       JSONObject jObject = json.getJSONObject("female");
       JSONObject jObject2 = jObject.getJSONObject("adult");
       String name = jObject2.toString();
    }
    catch (Exception e) {
       e.printStackTrace();
    }
}

注意 - 根据try块中包含的语句的外观,我认为您打算返回一些数据?如果是这种情况,只需用适当的返回类型替换void返回类型并返回该数据。