【问题标题】:Html in json (no need for json specification)json中的html(不需要json规范)
【发布时间】:2016-08-01 05:59:13
【问题描述】:

我是一个非常高兴的 jackson objectmapper 用户。

但让我烦恼的一件事是我必须手动在 json 中输入 html,有很多转义对于没有经验的用户来说非常困难。

有没有办法允许杰克逊可以读取的json文件中未转义的纯html?例如 xml 中的 cdata。

json 不必满足 json 规范/标准,任何预处理或后处理都是可能的。但需要使用例如记事本在 json 中手动输入。

stackoverflow 上有很多关于这个主题的问题和答案,但它们大多都需要满足 json 规范,这对我来说不是必需的。

【问题讨论】:

  • 您可以使用工具在将 HTML 粘贴到 JSON 文件之前对其进行转义。在记事本中编写 HTML -> 使用在线工具对其进行转义 -> 将其粘贴到 JSON 文件中。
  • 如果您必须经常执行此活动,您也可以编写一个图形工具来获取您的输入并生成 JSON 文件。
  • @Teddy 为这个想法喝彩,但是当引入在线工具或 UI 时,编辑工作流程会变得相当冗长,json 的好处是它可以在没有 UI 的情况下快速编辑,只需简单旧记事本或在命令行上使用 vi 或 nano 等默认编辑器。
  • 只需添加类似 CDATA 的内容并将文件另存为 .jsonxyz。然后运行一个自定义的 java 程序,它将 .jsonxyz 转换为 .json

标签: java json jackson


【解决方案1】:

我确实选择了@Teddy 解决方案:

只需添加 CDATA 之类的内容并将文件另存为 .jsonxyz。然后运行自定义 java 程序,将 .jsonxyz 转换为 .json

有图案

<cdata>(.*?)</cdata>

我匹配了我的 json 中包含 html 的 cdata。使用 appendReplacement,我用与 json 兼容的转义 html 替换了 html。接下来我只是用jackson阅读了整个json。

使用 cdata 和未转义的 html 再次对其进行序列化:

HtmlFieldSerializer extends JsonSerializer<String>{
...
gen.writeRaw(": \"<cdata>"+value+"</cdata>\"");

下一个jackson可以简单地将json写入文件。

【讨论】:

    猜你喜欢
    • 2022-08-04
    • 1970-01-01
    • 2021-06-07
    • 2018-10-26
    • 1970-01-01
    • 2018-03-27
    • 2017-10-27
    • 1970-01-01
    • 2014-11-06
    相关资源
    最近更新 更多