0
我正在尝试读取/写入json文件。但是在第一次写入之后,json会转义并再次读取将不起作用。我具有以下json结构,但具有更多的价值:
{
"events": {
"XdQKixgtraz17eDHb6OW": {
"department": "Côte-d'Or",
"objectName": "Dijon",
"uid": "PMhzfzWlm6vN2yL1kY2i"
}
}
}
这是我的阅读功能:
public static JSONObject readJSONFile (String path, Context context){
try {
File jsonFile = new File(context.getFilesDir(), path);
FileInputStream stream = new FileInputStream(jsonFile);
String jsonStr = null;
try {
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
jsonStr = Charset.defaultCharset().decode(bb).toString();
}
catch(Exception e){
e.printStackTrace();
}
finally {
stream.close();
}
JSONObject jsonObj = new JSONObject((jsonStr));
return jsonObj;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
这是我的写功能:
public static boolean writeFile(Context context, String fileName, String jsonString) {
try {
File file = new File(context.getFilesDir(), fileName);
FileOutputStream stream = new FileOutputStream(file);
stream.write(jsonString.getBytes());
stream.close();
return true;
} catch (FileNotFoundException fileNotFound) {
fileNotFound.printStackTrace();
return false;
} catch (IOException ioException) {
ioException.printStackTrace();
return false;
}
}
我最后得到一个看起来像这样的字符串,我再也看不懂了..:
{"events":{"XdQKixgtraz17eDHb6OW":"{\"department\":\"Côte-d'Or\",\"objectName\":\"Dijon\",\"uid\":\"PMhzfzWlm6vN2yL1kY2i\"}"}}
由于我的json文件大约2 Mo而没有逃避,我试图不增加转义字符的大小。
我应该对原始文件进行转义,然后在每次读取时对其进行转义,还是有一种没有任何转义的方法?
谢谢你的时间。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。