Java / JSON.simple - 在斜线前打印反斜线
Java / JSON.simple - printing backslash before slash
我正在通过 Java 和 JSON.simple 库将一些数据打印到 json 文件中,但是每当出现斜杠时我都会添加一个反斜杠,如下所示:
"thing":[
{"file":"Screenshot_from_2018-07-12_14-41-19.png",
"currentDateTime":"02\/08\/2018 15:11:14",
"selectedDate":"02\/08\/2018",
"uri":"\/var\/stuff\/files\/Screenshot_from_2018-07-12_14-41-19.png",
"user":"user"}
]
它发生在我们将地图传递给 JSONObject 的那一刻:
map.put("file", fileNameFormat);
map.put("uri", filesPath + "/" + service + "/" + fileNameFormat);
map.put("user", user);
map.put("selectedDate", selectedDate);
map.put("currentDateTime", currentDateTime);
JSONObject json = new JSONObject(map); //HERE
我认为当我进一步开发该实用程序时,这将是一个问题。为什么会发生这种情况,我该如何绕过它?提前致谢。
这样做是为了允许 json 脚本标签内的字符串,正如这个问题所解释的:
JSON: why are forward slashes escaped?
在 javascript 方面,它将按预期读取。
'\/' === '/'
在 JavaScript 中,JSON 是有效的 JavaScript。
要处理 Java 中的所有内容,可以使用 Gson。请检查 link 以使用 Gson 将 Json 转换为对象:
JSON.simple 在 JSON specification RFC4627 之后。斜杠和其他各种控制序列都应转义。
这不会以任何方式限制您的应用程序,因为 JavaScript 会将其识别为简单的“/”。
您可以为此使用 GSON 库。
例如,
HashMap<String, String> map = new HashMap<>();
map.put("file", "file");
map.put("uri", "Your_filesPath" + "/" + "Your_service" + "/" + "Your_fileNameFormat");
map.put("user", "user");
map.put("selectedDate", "selectedDate");
map.put("currentDateTime", "currentDateTime");
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println(json);
放置 GSON 依赖项并希望它能与 GSON 库一起使用。
我正在通过 Java 和 JSON.simple 库将一些数据打印到 json 文件中,但是每当出现斜杠时我都会添加一个反斜杠,如下所示:
"thing":[
{"file":"Screenshot_from_2018-07-12_14-41-19.png",
"currentDateTime":"02\/08\/2018 15:11:14",
"selectedDate":"02\/08\/2018",
"uri":"\/var\/stuff\/files\/Screenshot_from_2018-07-12_14-41-19.png",
"user":"user"}
]
它发生在我们将地图传递给 JSONObject 的那一刻:
map.put("file", fileNameFormat);
map.put("uri", filesPath + "/" + service + "/" + fileNameFormat);
map.put("user", user);
map.put("selectedDate", selectedDate);
map.put("currentDateTime", currentDateTime);
JSONObject json = new JSONObject(map); //HERE
我认为当我进一步开发该实用程序时,这将是一个问题。为什么会发生这种情况,我该如何绕过它?提前致谢。
这样做是为了允许 json 脚本标签内的字符串,正如这个问题所解释的:
JSON: why are forward slashes escaped?
在 javascript 方面,它将按预期读取。
'\/' === '/'
在 JavaScript 中,JSON 是有效的 JavaScript。
要处理 Java 中的所有内容,可以使用 Gson。请检查 link 以使用 Gson 将 Json 转换为对象:
JSON.simple 在 JSON specification RFC4627 之后。斜杠和其他各种控制序列都应转义。
这不会以任何方式限制您的应用程序,因为 JavaScript 会将其识别为简单的“/”。
您可以为此使用 GSON 库。
例如,
HashMap<String, String> map = new HashMap<>();
map.put("file", "file");
map.put("uri", "Your_filesPath" + "/" + "Your_service" + "/" + "Your_fileNameFormat");
map.put("user", "user");
map.put("selectedDate", "selectedDate");
map.put("currentDateTime", "currentDateTime");
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println(json);
放置 GSON 依赖项并希望它能与 GSON 库一起使用。