Java Jackson模板属性替换

Java Jackson模板属性替换,java,json,jackson,java-7,Java,Json,Jackson,Java 7,我正在使用一个包含JSON的文件来配置我的应用程序的内部。我希望能够使用系统属性来配置我的值,并在解组JSON时对它们进行变量替换 我写的模板部分没什么大不了的。我想找出的是将其插入ObjectMapper的最佳方法 环顾四周,我认为最好的地方应该是JsonParser.getText方法,但我似乎找不到任何合理的方法来做到这一点 下面是我试图做的一个小例子。基本上,我需要在反序列化属性之前解析它 我在这里抛出了Path示例,因为之前我天真地在POJO的setter上执行此操作,这导致JDK7M

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

我写的模板部分没什么大不了的。我想找出的是将其插入ObjectMapper的最佳方法

环顾四周,我认为最好的地方应该是JsonParser.getText方法,但我似乎找不到任何合理的方法来做到这一点

下面是我试图做的一个小例子。基本上,我需要在反序列化属性之前解析它

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


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

使用此方法获得灵感,但由于令牌大小不同,必须完全实施此方法并以稍微不同的方式执行:


我仍然渴望听到关于如何将其嵌入Jackson的正常流的任何想法,因为这可能是我想要扩展到JAX-RS流的内容,我不确定我是否有权包装这些输入流-尽管我想我可以在该API中找到钩子来实现这一点。

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

使用此方法获得灵感,但由于令牌大小不同,必须完全实施此方法并以稍微不同的方式执行:


我仍然渴望听到关于如何将其嵌入Jackson的正常流的任何想法,因为这可能是我想要扩展到JAX-RS流的东西,我不确定我是否有权包装这些输入流-尽管我想我可以在该API中找到钩子来包装这些输入流。

String replace会做得对吗?不是替换,而是替换问题是在哪里把它和杰克逊联系起来。我使用Matcher来做实际工作,这很简单。不幸的是,由于诸如nio.Path之类的原因,我必须在对传递给它的原始输入流或读取器进行反序列化的过程中进行替换。这实际上给了我一个想法;)谢谢字符串替换会正确吗?问题不在于替换,而在于在何处将其连接到jackson。我使用Matcher来做实际工作,这很简单。不幸的是,由于诸如nio.Path之类的原因,我必须在对传递给它的原始输入流或读取器进行反序列化的过程中进行替换。这实际上给了我一个想法;)谢谢
[
 { "name": "${sys:NAME}",
   "path": "${sys:ROOT}"
 }
]