Gson使用反斜杠java序列化问题

时间:2014-02-04 08:35:36

标签: java json gson

Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String path = "/folder1/folder2".replaceAll("/","\\\\/");//for get \/folder1\/folder2
String result = gson.toJson(path);

,结果是\\ / folder1 \\ / folder2

1 个答案:

答案 0 :(得分:2)

您的路径包含反斜杠,而toJson()正在对其进行转义。当您在另一端反序列化时,您将通过正常的JSON unescaping结束\/folder1\/folder2字符串。我不认为这是一个问题:序列化的目的是让你在远端获得相同的数据。你的输入是\/folder1\/folder2,你的输出也是如此 - 事实上,这需要在途中逃避是无关紧要的。

尽管如此,它确实提出了为什么你想在字符串中使用\/的问题。你是想手动逃避正斜杠吗?你不需要这样做。我强烈怀疑你应该/folder1/folder2没有任何替代品。

编辑:从评论中看,您似乎有甚至不理解要求逃避/。虽然事实证明它在JSON中转义任何字符都是有效的,但转义/的要求显然是非标准的,我怀疑你很难找到一个允许你说的JSON库你需要它来逃脱。

我建议您重新审视对您施加此要求的任何内容,并尝试修复它以便它接受标准JSON而不转义/。尝试手动添加额外级别的转义将工作。