【发布时间】:2016-02-03 09:47:53
【问题描述】:
我正在尝试打开一个 Json 文件,该文件位于 res 内的原始文件夹中 My file structure
但是我尝试过的每种方法都失败了,我只需要字符串,因为我已经可以解析 Json Strings。
这是我的Json 读者
public class Parser extends Activity {
public String getStringFromJson(String path) {
StringBuffer sb = new StringBuffer();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(getAssets().open(path)));
String temp;
while ((temp = br.readLine()) != null)
sb.append(temp);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close(); // stop reading
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
它在行中失败:
br = new BufferedReader(new InputStreamReader(getAssets().open(path)));
这就是logcat所说的:
02-03 10:44:13.440 2374-2374/com.example.ealcazar.kolibry E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ealcazar.kolibry/com.example.ealcazar.kolibry.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.io.BufferedReader.close()' on a null object reference
有没有更简单的方法来阅读Json?尝试访问RAW folder 中的文件时应该使用什么路径?
非常感谢。
【问题讨论】:
-
我的问题是我将 res 文件夹与 assets 文件夹混淆了,而且我得到了错误的上下文。我在 Android Studio 中创建了一个资产文件夹,并通过将它声明为静态并在 onCreate (MainActivity.context.getResources) 中分配它来从我的 mainActivity 中获取上下文