【问题标题】:Jackson Template Property ReplacementJackson 模板属性替换
【发布时间】:2015-06-24 15:44:44
【问题描述】:

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

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

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

这是我正在尝试做的一个 sn-p 示例。基本上我需要在反序列化之前解析该属性。

我将 Path 示例放在那里,因为之前我天真地在 POJO 的设置器上执行此操作,这导致 JDK7Module 的 Path 反序列化失去了理智(它不喜欢 :)

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

【问题讨论】:

  • 字符串替换会做对吗?
  • 问题不在于替代品,而在于将其与杰克逊挂钩。我使用 Matcher 来完成实际的工作,这很简单。不幸的是,由于诸如 nio.Path 之类的事情,我必须在反序列化过程中对传递给它的原始输入流或读取器进行替换。这实际上给了我一个想法;)谢谢!

标签: java json jackson java-7


【解决方案1】:

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

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

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

我仍然渴望听到有关如何将其卡在 Jackson 的正常流程中的任何想法,因为这可能是我想扩展到 JAX-RS 流程的东西,但我不确定我是否可以包装这些输入流——虽然我想我可以在那个 API 中找到这样做的钩子。

【讨论】:

    猜你喜欢
    • 2015-02-19
    • 2012-07-23
    • 2023-01-27
    • 1970-01-01
    • 2020-05-04
    • 2018-05-06
    • 2012-09-11
    • 2019-07-28
    • 2019-07-31
    相关资源
    最近更新 更多