Gson 在转换为 json - Android 时再次转义转义序列
Gson escapes the escape sequences again while converting to json - Android
我正在尝试向服务器发送 html 字符串。
我拥有的html:
val htmlInput = "<div>ansi nmasbnmbsanbdmnsbmndbsanbdnbsand<br></div><div><span class=\"size\" style=\"font-size: 16px\">ggsgjfgjfdgfgdg</span><br></div><div><br></div><div><span class=\"size\" style=\"font-size: 16px\">fgsdgfd</span><br></div><div><br></div><div><br></div><div><ul><li>fgsfgdf<br></li></ul><div><br></div><div><ol><li>fgdsg<br></li><li>sdfgsd<br></li><li>sfgs<br></li><li>sdfg<br></li><li>gfdsffgf<br></li></ol><div><br></div><blockquote style=\"background-color: rgb(245, 245, 245); padding: 7px; border: 1px solid rgb(204, 204, 204);\"><div><div><span class=\"colour\" style=\"color:rgba(57, 229, 0, 2.6)\"><span class=\"highlight\" style=\"background-color:rgba(255, 64, 0, 2.6)\">jfkdsfsdfsfsdfs</span></span><br></div></div></blockquote></div><div><br></div><div>ajjfajfjajfjf<br></div><div><br></div><table border=\"1\" cellpadding=\"2\" cellspacing=\"2\" style=\"width: 100%;\"><tbody><tr><td>afafsadfasfdsa</td><td>ddadasdadadasd</td></tr><tr><td>adadasdasd</td><td>asdadadasdasda</td></tr></tbody></table><div><br></div><div><br></div></div><div><br></div>"
现在我正在尝试使用类似
的 gson 构造输入 json
val inputData = mapOf("input" to htmlInput)
val gson = GsonBuilder().disableHtmlEscaping().create()
val inputDataString = gson.toJson(inputData)
现在,从上面的代码得到的inputDataString是这样的,
{ "input" : "<div>ansi nmasbnmbsanbdmnsbmndbsanbdnbsand<br><\/div><div><span class=\\"size\\" style=\\"font-size: 16px\\">ggsgjfgjfdgfgdg<\/span><br><\/div><div><br><\/div><div><span class=\\"size\\" style=\\"font-size: 16px\\">fgsdgfd<\/span><br><\/div><div><br><\/div><div><br><\/div><div><ul><li>fgsfgdf<br><\/li><\/ul><div><br><\/div><div><ol><li>fgdsg<br><\/li><li>sdfgsd<br><\/li><li>sfgs<br><\/li><li>sdfg<br><\/li><li>gfdsffgf<br><\/li><\/ol><div><br><\/div><blockquote style=\\"background-color: rgb(245, 245, 245); padding: 7px; border: 1px solid rgb(204, 204, 204);\\"><div><div><span class=\\"colour\\" style=\\"color:rgba(57, 229, 0, 2.6)\\"><span class=\\"highlight\\" style=\\"background-color:rgba(255, 64, 0, 2.6)\\">jfkdsfsdfsfsdfs<\/span><\/span><br><\/div><\/div><\/blockquote><\/div><div><br><\/div><div>ajjfajfjajfjf<br><\/div><div><br><\/div><table border=\\"1\\" cellpadding=\\"2\\" cellspacing=\\"2\\" style=\\"width: 100%;\\"><tbody><tr><td>afafsadfasfdsa<\/td><td>ddadasdadadasd<\/td><\/tr><tr><td>adadasdasd<\/td><td>asdadadasdasda<\/td><\/tr><\/tbody><\/table><div><br><\/div><div><br><\/div><\/div><div><br><\/div>" }
我不明白为什么 Gson 会进一步转义正确转义的字符串。建议我必须更改哪些内容才能使上述代码正常工作。
提前致谢。
嗯,一切都很好,如果我们将引号保留为 "
,JSON 格式将被破坏,例如:
{
"a" : ""b"
}
但有反斜杠保护(转义字符)"\""
没问题:
{
"a": "\"b"
}
I'm trying to send a html string to server.
如果请求有 "content-type", "application/json"
,您的服务器端应该处理它。你这边无事可做
关于disableHtmlEscaping
:
By default, Gson escapes HTML characters such as < > etc. Use this option to configure Gson to pass-through HTML characters as is.
我正在尝试向服务器发送 html 字符串。 我拥有的html:
val htmlInput = "<div>ansi nmasbnmbsanbdmnsbmndbsanbdnbsand<br></div><div><span class=\"size\" style=\"font-size: 16px\">ggsgjfgjfdgfgdg</span><br></div><div><br></div><div><span class=\"size\" style=\"font-size: 16px\">fgsdgfd</span><br></div><div><br></div><div><br></div><div><ul><li>fgsfgdf<br></li></ul><div><br></div><div><ol><li>fgdsg<br></li><li>sdfgsd<br></li><li>sfgs<br></li><li>sdfg<br></li><li>gfdsffgf<br></li></ol><div><br></div><blockquote style=\"background-color: rgb(245, 245, 245); padding: 7px; border: 1px solid rgb(204, 204, 204);\"><div><div><span class=\"colour\" style=\"color:rgba(57, 229, 0, 2.6)\"><span class=\"highlight\" style=\"background-color:rgba(255, 64, 0, 2.6)\">jfkdsfsdfsfsdfs</span></span><br></div></div></blockquote></div><div><br></div><div>ajjfajfjajfjf<br></div><div><br></div><table border=\"1\" cellpadding=\"2\" cellspacing=\"2\" style=\"width: 100%;\"><tbody><tr><td>afafsadfasfdsa</td><td>ddadasdadadasd</td></tr><tr><td>adadasdasd</td><td>asdadadasdasda</td></tr></tbody></table><div><br></div><div><br></div></div><div><br></div>"
现在我正在尝试使用类似
的 gson 构造输入 jsonval inputData = mapOf("input" to htmlInput)
val gson = GsonBuilder().disableHtmlEscaping().create()
val inputDataString = gson.toJson(inputData)
现在,从上面的代码得到的inputDataString是这样的,
{ "input" : "<div>ansi nmasbnmbsanbdmnsbmndbsanbdnbsand<br><\/div><div><span class=\\"size\\" style=\\"font-size: 16px\\">ggsgjfgjfdgfgdg<\/span><br><\/div><div><br><\/div><div><span class=\\"size\\" style=\\"font-size: 16px\\">fgsdgfd<\/span><br><\/div><div><br><\/div><div><br><\/div><div><ul><li>fgsfgdf<br><\/li><\/ul><div><br><\/div><div><ol><li>fgdsg<br><\/li><li>sdfgsd<br><\/li><li>sfgs<br><\/li><li>sdfg<br><\/li><li>gfdsffgf<br><\/li><\/ol><div><br><\/div><blockquote style=\\"background-color: rgb(245, 245, 245); padding: 7px; border: 1px solid rgb(204, 204, 204);\\"><div><div><span class=\\"colour\\" style=\\"color:rgba(57, 229, 0, 2.6)\\"><span class=\\"highlight\\" style=\\"background-color:rgba(255, 64, 0, 2.6)\\">jfkdsfsdfsfsdfs<\/span><\/span><br><\/div><\/div><\/blockquote><\/div><div><br><\/div><div>ajjfajfjajfjf<br><\/div><div><br><\/div><table border=\\"1\\" cellpadding=\\"2\\" cellspacing=\\"2\\" style=\\"width: 100%;\\"><tbody><tr><td>afafsadfasfdsa<\/td><td>ddadasdadadasd<\/td><\/tr><tr><td>adadasdasd<\/td><td>asdadadasdasda<\/td><\/tr><\/tbody><\/table><div><br><\/div><div><br><\/div><\/div><div><br><\/div>" }
我不明白为什么 Gson 会进一步转义正确转义的字符串。建议我必须更改哪些内容才能使上述代码正常工作。
提前致谢。
嗯,一切都很好,如果我们将引号保留为 "
,JSON 格式将被破坏,例如:
{
"a" : ""b"
}
但有反斜杠保护(转义字符)"\""
没问题:
{
"a": "\"b"
}
I'm trying to send a html string to server.
如果请求有 "content-type", "application/json"
,您的服务器端应该处理它。你这边无事可做
关于disableHtmlEscaping
:
By default, Gson escapes HTML characters such as < > etc. Use this option to configure Gson to pass-through HTML characters as is.