我刚开始学习Java。我目前正在开发一个从.JSON文件中检索数据的小应用程序,并将其存储到SQLite数据库中。
我尝试打开。JSON
文件并将其存储为JSONObject
。这是我读取JSON文件的代码。
private JSONObject readFile(String path) {
StringBuilder sb = new StringBuilder();
try {
FileReader in = new FileReader(new File(path));
int b;
while((b = in.read()) != -1) {
sb.appendCodePoint(b);
}
in.close();
return new JSONObject(sb.toString());
}
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
我的JSON文件存储在: app \ src \ main \ java \ proj \ bb \ database \ jsonFiles
我当前正在调用readFile方法,如下所示:但它会抛出NullPointer
。 (DatabaseOperations是类名)。
JSONObject jsonFile = readFile(DatabaseOperations.class.getResource("filename.json").toString());
JSONArray arr = jsonFile.getJSONArray("someArray");
我也没有成功地试过这个:
JSONObject jsonFile = readFile("jsonFiles/filename.json").toString());
JSONArray arr = jsonFile.getJSONArray("someArray");
所以我的问题是,我需要通过哪条路径作为参数传递?或者我做错了什么?
提前致谢!
答案 0 :(得分:2)
将您的JSON文件放在assets文件夹中并从那里访问它。 您可以使用以下方法将数据读取为 -
public static String getJSONData(Context context, String textFileName) {
String strJSON;
StringBuilder buf = new StringBuilder();
InputStream json;
try {
json = context.getAssets().open(textFileName);
BufferedReader in = new BufferedReader(new InputStreamReader(json, "UTF-8"));
while ((strJSON = in.readLine()) != null) {
buf.append(strJSON);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return buf.toString();
}
Method将返回JSON字符串,您可以将JSONObject
的实例创建为
外部json文件为:sample.json
String jsonString = getJSONData(MainActivity.this, "sample.json");
JSONObject jsonObject = new JSONObject(jsonString);