从sdcard读取json文件返回 - 空指针异常
问题描述:
我搜索了所有通过相关的线程,我没有成功,欢迎任何相关的答案。从sdcard读取json文件返回 - 空指针异常
我有一个JSON数据作为.json
文件的SD卡.NewFolder
文件夹内, 我想读文件中的数据和分析,找到时间戳和要重写,如果时间戳是不同的。
以下是我使用的代码,我得到aBuffer
中的数据和jdata_fromfile
中的值,但我在解析时得到了nullPointerException。
myFile = new File(Environment.getExternalStorageDirectory() + "/.NewFolder/" +str.get(i));
if(myFile.exists())
{
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
String aDataRow = "";
String aBuffer = "";
while ((aDataRow = myReader.readLine()) != null)
{
aBuffer += aDataRow;
}
myReader.close();
jdata_fromfile = new JSONObject(aBuffer);
String timestamp_fromfile = jdata_fromfile.getString(str_timestamp.get(i));
timestamp_val_fromfile.add(timestamp_fromfile);
}
else
{
myFile.createNewFile();
writedate_tofile(value_json.toString());
timestamp_val_fromfile.add("xxx");
}
而且还在于,当我打开记事本文件,它是所有中只显示数据的一部分一行,当我复制到http://jsonformatter.curiousconcept.com
我得到的全部数据和一个有效的json。 我可以在记事本中看到剩余的数据 - ctrl + end并按下回车键。
这是为什么,我在哪里出错?
这是我的错误 - 登录
02-13 18:44:52.109: E/aBuffer value(7134): is {"Status":{"Itemlist":[{"x - Drinks":{"Details":[{"type":"","image":"","price":"","name":"Minerals"},{"type":"","image":"","price":"","name":"Milk Shakes"},{"type":"","image":"","price":"","name":"Milk"},{"type":"","image":"","price":"","name":"Mineral Water"},{"type":"","image":"","price":"","name":"Hot Beverages"},{"type":"","image":"","price":"","name":"Chocolate Muffin and Ice Cream"}, ........................................................................{"type":"","image":"","price":"","name":"Blu
02-13 18:44:52.189: E/jdata_fromfile value(7134): is {"x Time_stamp":"2013-02-12 12:30:00","Status":{"Itemlist":[{"x - Sides":{"Details":[{"type":"","image":"","name":"Onion Rings (6)","price":""},{"type":"","image":"","name":"Sausage Portion (Minimum 2 per portion)","price":""},.................................................................................................................... ,"x - Burgers":{"Details":[{"type":"","image":"","name":"x 5oz Burger","price":""},{"type":"","image":"","name":"x 5oz Cheese Burger","price":""},{"type":"","image":"","name":"x 5oz with Bacon and Cheese","price":""},{"type":"","imag
02-13 18:44:52.189: E/Reading from internal file - Exception e(7134): java.lang.NullPointerException
在此先感谢。
答
我不知道上面的代码有什么问题,但这里是使用不同JSON库的解决方案。
我在我的一个android应用程序中使用了下面的代码,它完全适用于从android文件系统读取任何json文件。我用的是json-simple.jar
而不是使用Android的JSON库,我使用json-simple.jar
http://code.google.com/p/json-simple/
把上面的jar放到你的Android项目的libs文件夹中。并在.Manifest
文件中设置以下权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
然后把follwing代码放在单独的线程中。
JSONParser parser = new JSONParser();
try {
String PATH = Environment.getExternalStorageDirectory() + "/Download/list.json";
Object object = parser.parse(new FileReader(PATH));
JSONObject jsonObject = (JSONObject) object;
//Use JSONArray instead of JSONObject if json file contains array of JSONs
//
// Do anything with jsonObject
//
} catch(Exception e) {
// TODO: handle exception
}
这里我list.json
文件是在位置/mnt/sdcard/Download
。
为了参考here是使用以上在简单的Java项目库的例子。
在哪一行你会得到NullPointerException?只需发布堆栈跟踪。 – svennergr 2013-02-13 13:00:36
我正在使用一个try-catch上面的代码中,我也得到:02-13 18:33:15.909:从内部文件E /阅读 - 异常E(6632):显示java.lang.NullPointerException – VIGNESH 2013-02-13 13:07:26
张贴整个堆栈跟踪你得到。 – svennergr 2013-02-13 13:08:31