gpt4 book ai didi

java - 如何使用 Java/Jackson 解析 YAML 文件并管理 $ref 引用值

转载 作者:行者123 更新时间:2023-12-01 21:36:40 31 4
gpt4 key购买 nike

我正在使用 Java 中的 Jackson 解析包含 $ref 属性的 YAML 文件:

servers:
server1:
name: EU server
host:
$ref: '#/definitions/host'
server2:
name: USA server
host:
$ref: '#/definitions/host'

definitions:
host:
ip: 10.0.0.1
port: 9999

代码:

    String content = ...;

ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

Servers servers = objectMapper.readValue(content, Servers.class);

如何配置 Jackson 以遵循 $ref 属性?

编辑:生成的对象将具有可用的servers.server1.host.ip 和servers.server1.host.port 属性,而不是$ref 属性。

最佳答案

YAML 中的

$ref 只是一个标量,它没有任何特殊含义。您可能正在使用一种赋予其特殊含义的工具,但您没有告诉我们是哪一个。

Jackson 能够加载 YAML,但没有对特定于应用程序的架构的内置支持(YAML 中的架构是将特殊属性分配给像 $ref 这样的标量)。这意味着,如果您想根据您正在使用的任何工具的语义来解释 $ref,您需要自己实现它,或者如果可能的话,使用该工具的 API。

如果您认为 $ref 是 YAML 功能(事实并非如此),请查看 anchor 和别名,它们是引用先前定义的节点的 YAML 方式:

foo: &bar original  # scalar `original` with anchor
bar: *bar # reference to scalar `original`

关于java - 如何使用 Java/Jackson 解析 YAML 文件并管理 $ref 引用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58800889/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com