Java Android,如何读取原始文件夹中的Json
我试图打开一个Json文件,它位于res中的原始文件夹中 但是我尝试过的每个方法都失败了,我只需要字符串,因为我已经可以解析Java Android,如何读取原始文件夹中的Json,java,android,json,Java,Android,Json,我试图打开一个Json文件,它位于res中的原始文件夹中 但是我尝试过的每个方法都失败了,我只需要字符串,因为我已经可以解析JsonStrings 这是我的Json阅读器 public class Parser extends Activity { public String getStringFromJson(String path) { StringBuffer sb = new StringBuffer(); BufferedReader br =
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(新的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?尝试访问原始文件夹中的文件时应使用什么路径
非常感谢。替换这些代码行
br = new BufferedReader(new InputStreamReader(getAssets().open(path)));
用这些
br = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.json));//Here json is the name of the file which is placed inside the RAW folder in yours resource
Parser.this.getResources()
=>getResources()
。。。您不需要解析器。这个有时会在@Selvin处抛出异常。。我使用了ClassName.getResource()而不是getResource()方法..感谢您的建议:)有时它会抛出异常。。。如果你懂java,根本不可能。。。这是个例外吗?还是编译时错误。。。你这样调用类中的每个方法<代码>类C{void r(){}void t(){}void main(){C.this.r();C.this.t();}}}
heheehehew你怎么想。。在访问资源之前使用CLASSNAME.this是一种不好的做法吗?谢谢你的回答,但问题还没有解决,至少现在它似乎知道文件在哪里,崩溃仍然在同一行,日志现在是:02-03 11:05:38.740 12864-12864/com.example.ealcazar.kolibry E/AndroidRuntime:java.lang.RuntimeException:无法启动活动组件信息{com.example.ealcazar.kolibry/com.example.ealcazar.kolibry.MainActivity}:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void java.io.BufferedReader.close()”。我的问题是我将res文件夹与assets文件夹混淆,而且我获得了错误的上下文。我在Android Studio中创建了一个资产文件夹,并通过将其声明为静态并在onCreate(mainActivity.context.getResources)中分配,从我的mainActivity中获取了上下文