java - Android - 如何正确编写 JSONObject 字符串
问题描述
我正在尝试读/写一个 json 文件。但是在第一次写入之后,json 被转义并且再次读取它不起作用。我有以下 json 结构,但具有更多价值:
{
"events": {
"XdQKixgtraz17eDHb6OW": {
"department": "Côte-d'Or",
"objectName": "Dijon",
"uid": "PMhzfzWlm6vN2yL1kY2i"
}
}
}
这是我构建我的 json 字符串的方式:
JSONObject eventsJsonObject = new JSONObject();
JSONObject eventsData = new JSONObject();
for(Event event: eventsList){
String eventString = gson.toJson(event);
eventsData.put(event.getUid(), eventString);
}
eventsJsonObject.put("events", eventsData);
writeFile(filename, eventsJsonObject.toString());
我最终得到一个看起来像这样的字符串,我无法再次阅读它..:
{"events":{"XdQKixgtraz17eDHb6OW":"{\"department\":\"Côte-d'Or\",\"objectName\":\"Dijon\",\"uid\":\"PMhzfzWlm6vN2yL1kY2i\"}"}}
如您所见,在第三个分号之前有一个不应该存在的引号。如何正确构建我的 json 字符串?
谢谢你的时间。
编辑:错误来自我构建我的json字符串以写入文件的位置,所以我重写了我的问题。
解决方案
试试这个代码
public static JSONObject readJSONFile (String path, Context context) {
String jsonStr = null;
try {
InputStream is = getActivity().getAssets().open(path);
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
jsonStr = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
JSONObject jsonObj = new JSONObject((jsonStr ));
return jsonObj;
}
推荐阅读
- javascript - 创建带有小胡子的动态下拉列表
- swiftui - 如何在 SwiftUI TabView 中保持滚动位置
- python - Django Forms.py 电子邮件和电话验证
- android - Unity 2018.3,升级到 Catalina 后,在 Android (ndk n16b) 上进行 il2cpp 编译期间链接器崩溃
- c - 数值结果超出范围 semctl c
- html - 按钮导致输入字段在悬停时向上移动(在 chrome 上)
- java - Solr 中的完全外连接
- javascript - 无法在 Google 跟踪代码管理器中提取数据层变量
- fonts - Latex 为header定义中文字体样式
- python - 使用条件和函数向量化嵌套循环