如何在 JSON 中转义 HTML
How to escape HTML in JSON
我想知道如何转义 JSON 中的 HTML 代码?我正在使用 Jackson 作为我的 JSON 映射器。
我的内容中有各种字符:标签、单引号、双引号、换行符 (\n)、制表符等。我尝试使用 CharacterEscapes class,但没有结果。
我的 JSON 响应在使用 CharacterEscapes 后爆炸了。我尝试过手动转义,也没有任何结果。
所以问题是,假设我们有:
<p>Some text</p>\n<p>"SomeText"</p>
如何将它作为 JSON 对象的值发送回浏览器?
更新:
输入是:
{
"code": {
"num": 12
},
"obj": {
"label": "somelabel",
"order": 1
},
"det": {
"part": "1",
"cont": true
},
"html": "<p>Mine text</p>"
}
输出:
{
"code": {
"num": 12
},
"obj": {
"label": "somelabel",
"order": 1
},
"det": {
"part":"1",
"cont": true
},
"html":{"code": {
"num": 12
},
"obj": {
"label": "somelabel",
"order": 1
},
"det": {
"part":"
}
我建议使用以下任一方法。
1.You 可以为此目的使用 GSON 库。
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
2.Use Apache 公共资源 StringEscapeUtils.escapeHtml("JSON string")
。
目前我找到了以下解决方案:
我已将 CharacterEscapes 添加到 ObjectMapper class 的 JsonFactory。
我也改变了将 JSON 写成响应的方式。
而不是
objectMapper.writeValue(response.getWriter(), myObject)
我正在这样做:
PrintWriter writer = response.getWriter();
writer.print(String.valueOf(objectMapper.writeValueAsBytes(myObject));
writer.flush();
它如我所愿。
我想知道如何转义 JSON 中的 HTML 代码?我正在使用 Jackson 作为我的 JSON 映射器。
我的内容中有各种字符:标签、单引号、双引号、换行符 (\n)、制表符等。我尝试使用 CharacterEscapes class,但没有结果。
我的 JSON 响应在使用 CharacterEscapes 后爆炸了。我尝试过手动转义,也没有任何结果。
所以问题是,假设我们有:
<p>Some text</p>\n<p>"SomeText"</p>
如何将它作为 JSON 对象的值发送回浏览器?
更新: 输入是:
{
"code": {
"num": 12
},
"obj": {
"label": "somelabel",
"order": 1
},
"det": {
"part": "1",
"cont": true
},
"html": "<p>Mine text</p>"
}
输出:
{
"code": {
"num": 12
},
"obj": {
"label": "somelabel",
"order": 1
},
"det": {
"part":"1",
"cont": true
},
"html":{"code": {
"num": 12
},
"obj": {
"label": "somelabel",
"order": 1
},
"det": {
"part":"
}
我建议使用以下任一方法。
1.You 可以为此目的使用 GSON 库。
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
2.Use Apache 公共资源 StringEscapeUtils.escapeHtml("JSON string")
。
目前我找到了以下解决方案: 我已将 CharacterEscapes 添加到 ObjectMapper class 的 JsonFactory。 我也改变了将 JSON 写成响应的方式。 而不是
objectMapper.writeValue(response.getWriter(), myObject)
我正在这样做:
PrintWriter writer = response.getWriter();
writer.print(String.valueOf(objectMapper.writeValueAsBytes(myObject));
writer.flush();
它如我所愿。