杰克逊模板属性替换

时间:2015-06-24 15:44:44

标签: java json jackson java-7

我使用包含JSON的文件来配置我的应用程序的内部。我希望能够使用系统属性配置我的值,并在解组JSON时对它们进行变量替换。

我写过的模板部分并不是什么大不了的事。我想弄清楚的是将其插入我的ObjectMapper的最佳方式。

从四处查看,我认为最好的地方是JsonParser.getText方法,但我似乎无法找到任何理智的方法来做到这一点。

这是我尝试做的事情的片段示例。基本上我需要在反序列化之前解析该属性。

我在那里抛出了Path示例,因为之前我在POJO的setter上天真地执行了这个操作,导致JDK7Module的路径反序列化失去了理智(它不喜欢:)

[
 { "name": "${sys:NAME}",
   "path": "${sys:ROOT}"
 }
]

1 个答案:

答案 0 :(得分:0)

我最终创建了一个解析FilterInputStream的属性。当我从代码中的文件反序列化JSON时,我有这种奢侈。

使用它作为灵感,但由于令牌大小不同,必须完全实现它并以稍微不同的方式执行:

Filter (search and replace) array of bytes in an InputStream

我仍然渴望听到关于如何陷入杰克逊正常流程的任何想法,因为这可能是我想要扩展到JAX-RS流程的东西,我不确定我是否可以访问这些流程输入流 - 虽然我想我可以在那个API中找到钩子来做到这一点。