我是一个非常快乐的jackson对象映射器用户。
但有一件事确实困扰着我,那就是我必须手动在json中输入html,这对一个没有经验的用户来说是非常困难的。
有没有一种方法可以允许jackson在json文件中读取未标记的纯html?例如xml中的cdata。
json不必满足json规范/标准,任何预处理或后处理都是可能的。但它需要在json中手动输入,例如使用notepad。
关于这个主题,stackoverflow有很多问题和答案,但它们大多都需要满足json规范,这对我来说不是一个要求。
我确实使用了@Teddy解决方案:
只需添加CDATA之类的内容,并将文件保存为.jsonxyz。然后运行一个自定义java程序,将.jsonxyz转换为.json
带有图案
<cdata>(.*?)</cdata>
我匹配json中包含html的cdata。使用appendReplacement,我用与json兼容的转义html替换了html。接下来,我只是和jackson一起阅读整个json。
为了用cdata和unscaped html再次序列化它,我扩展了:
HtmlFieldSerializer extends JsonSerializer<String>{
...
gen.writeRaw(": "<cdata>"+value+"</cdata>"");
接下来,jackson可以简单地将json写入文件。