json - Gson转换为JSON时再次转义转义序列-Android

标签 json string kotlin gson retrofit

我正在尝试将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.

关于json - Gson转换为JSON时再次转义转义序列-Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61406758/

相关文章:

用二进制 : binary content got truncated when hit 0x00 连接字符串

kotlin - ktor运行 fat jar 引发java.lang.UnsupportedOperationException::Kotlin反射尚不支持程序包和文件外观

android - 如何防止 Jetpack Compose ExposedDropdownMenuBox 在滚动时显示菜单

PHP json_decode 跳过部分源 JSON

javascript - jquery 删除 JSON 元素

java - 如何将字节流图像数据放入JSON对象中?

java - 尝试将 zip 文件内容的字符串表示形式保存为 Java 中的文件

c - 获取一个字符串,并使用连字符分隔符解析/标记为更小的字符串

jquery - 如何使用 jQuery 调用带有 JSON 响应的 ajax 请求?

android - 从字符串中拆分空间在 Kotlin 中不起作用