Java/JSON.simple-在斜杠之前打印反斜杠

Java/JSON.simple-在斜杠之前打印反斜杠,java,json,escaping,backslash,slash,Java,Json,Escaping,Backslash,Slash,我正在通过Java和json.simple库将一些数据打印到一个json文件中,但每当一个ther是一个斜杠时,就会添加一个反斜杠,如: "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\/fi

我正在通过Java和json.simple库将一些数据打印到一个json文件中,但每当一个ther是一个斜杠时,就会添加一个反斜杠,如:

"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字符串,正如这个问题所解释的:

在javascript端,它将按预期进行读取。
JavaScript中的
'\/'=='/'
,JSON是有效的JavaScript


为了用Java处理所有事情,可以使用Gson。请检查使用Gson将Json转换为对象的链接:

这样做是为了允许脚本标记中包含Json字符串,如此问题所述:

在javascript端,它将按预期进行读取。
JavaScript中的
'\/'=='/'
,JSON是有效的JavaScript

为了用Java处理所有事情,可以使用Gson。请检查使用Gson将Json转换为对象的链接:

Json.simple如下所示。斜杠和各种其他控制序列都应转义

这不会以任何方式限制您的应用程序,因为JavaScript会将其识别为一个简单的“/”

JSON.simple遵循以下命令。斜杠和各种其他控制序列都应转义


这不会以任何方式限制您的应用程序,因为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);
HashMap map=newhashmap();
map.put(“文件”、“文件”);
put(“uri”、“您的_文件路径”+“/”+“您的_服务”+“/”+“您的_文件名格式”);
地图放置(“用户”、“用户”);
地图放置(“选定日期”、“选定日期”);
map.put(“currentDateTime”、“currentDateTime”);
Gson Gson=新的Gson();
字符串json=gson.toJson(map);
System.out.println(json);

放置GSON依赖项,并希望它与GSON库一起工作。

您可以使用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);
HashMap map=newhashmap();
map.put(“文件”、“文件”);
put(“uri”、“您的_文件路径”+“/”+“您的_服务”+“/”+“您的_文件名格式”);
地图放置(“用户”、“用户”);
地图放置(“选定日期”、“选定日期”);
map.put(“currentDateTime”、“currentDateTime”);
Gson Gson=新的Gson();
字符串json=gson.toJson(map);
System.out.println(json);

放置GSON依赖项,并希望它能与GSON库一起工作。

对于这一点,json simple中没有解决方法。他们已经为此打开了一个bug:json simple中不可能有解决方法。他们已经有了一个漏洞:谢谢你的信息。这个.json文件应该只由Java处理,Java程序会在某个阶段再次读取它,所以我担心这个转义的斜杠在读取时会出现问题。Java会理解它们是转义斜杠吗?您可以使用Gson将Json转换为Java对象。谢谢您提供的信息。这个.json文件应该只由Java处理,Java程序会在某个阶段再次读取它,所以我担心这个转义的斜杠在读取时会出现问题。Java会理解它们是转义斜杠吗?您可以使用Gson将Json转换为Java对象。