【发布时间】:2018-05-14 18:00:03
【问题描述】:
我目前正在通过一本名为“Android Programming - The Big Nerd Ranch Guide”的书学习 android。 作为学习项目的一部分,我们创建 Json 序列化程序来保存和加载数据。写入文件看起来工作正常,我在 Logcat 上没有收到错误消息。在我终止应用程序并重新创建它后,数据加载器被调用并引发以下异常:
org.json.JSONException: 在字符 0 处输入结束
我在网上查找了这个问题,并认为这可能是因为 BufferedReader 返回一个空响应。我查过了,确实是这样。 为简单起见,我暂时将 BufferedReader 放入保存函数并尝试读取我刚刚保存到文件中的信息,但 BufferedReader 仍然只返回 null。
public void saveCrimes(ArrayList<Crime>crimes)
throws JSONException, IOException {
JSONArray array = new JSONArray();
for(Crime c: crimes)
array.put(c.toJSON());
Writer writer = null;
try {
OutputStream out = mContext.openFileOutput(mFileName, Context.MODE_PRIVATE);
writer = new OutputStreamWriter(out);
writer.write(array.toString());
Log.d(TAG, array.toString());
} finally {
if(writer == null)
writer.close();
}
// Extracting the data
BufferedReader bufferedReader = null;
try {
InputStream inputStream = mContext.openFileInput(mFileName);
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
if (bufferedReader.readLine() == null)
Log.d(TAG, "WHY GOD WHYYYYYYY");
}catch (IOException e){
}
}
(代码中的两条日志消息,第一条显示我正在使用的 JsonArray 中的数据)
D/CriminalIntentJSONSerializer: [{"date":"Mon May 14 17:33:08 GMT+00:00 2018","id":"97fe9532-991f-4352-9de1-602fa8dfa93e","isSolved":真,"标题":""}] D/CriminalIntentJSONSerializer: WHY GOD WHYYYYYYY
很想听听您的见解。
【问题讨论】:
-
检查
mFilename是否不同于null。将if(writer == null)更改为if(writer != null)以避免 NullPointerException。 -
没有 NullPointerException,我已经检查过了。 JSONException 是我得到的唯一一个。
标签: android json bufferedreader