如何在 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();

它如我所愿。