【发布时间】:2019-12-12 01:05:44
【问题描述】:
我正在尝试读/写一个 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 字符串以写入文件的位置,因此我重写了我的问题。
【问题讨论】:
-
“我最终得到了一个像这样的字符串”——大概就是你以
jsonString传递给writeFile()的内容。因此,请检查用于创建jsonString的代码,看看哪里出错了。 -
是的,我只是使用 myJsonObject.toString() 但我找不到没有转义字符的字符串化方法。
-
您的代码看起来不错,那么您在哪里看到带有转义字符的字符串?
-
where did you see the string with escaped characters?当我在写入文件后尝试读取文件时。我把它写成 jsonObject.toString() 所以它就在那里 json 被转义了。如果我使用 StringEscapeUtils.unescapeJson 它不能正确转义。 -
我已经编辑了我的问题,因为没有答案可以回答前一个问题,因为错误不是来自那个。
标签: java android json escaping