Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String path = "/folder1/folder2".replaceAll("/","\\\\/");//for get \/folder1\/folder2
String result = gson.toJson(path);结果是\/folder2 1\/folder2 2
发布于 2014-02-04 08:38:39
您的路径包含反斜杠,这些反斜杠由toJson()转义。当您在另一端反序列化时,您将通过普通的\/folder1\/folder2取消转义得到一个字符串的JSON。我不认为这是一个问题:序列化的目的是在远端获取与在这一端相同的数据。您的输入是\/folder1\/folder2,您的输出也是如此--这需要在整个过程中转义这一事实与此无关。
但是,它确实提出了一个问题,即为什么要在字符串中使用\/。你是想手动避开正斜杠吗?你不需要那样做。我强烈怀疑您应该只使用/folder1/folder2而不进行任何替换。
编辑:从评论中看,您似乎有一个您甚至不理解的条件来转义/。虽然在JSON中转义任何字符都是有效的,但转义/的要求显然是不标准的,我怀疑您将很难找到一个JSON库,它允许您说您需要转义它。
我建议您重新研究将此需求强加于您的任何东西,并尝试修复它,以便它接受标准的JSON,而不逃避/。尝试手动添加额外的转义级别将无法工作。
https://stackoverflow.com/questions/21547498
复制相似问题