当前位置: 首页 > 知识库问答 >
问题:

如何防止Spring Boot用点解析YAML键

黄宏毅
2023-03-14

我有一个带有属性映射的YAML配置文件:

properties:
  a.b.c: 1

引导将解析为:

{a:{b:{c:1}}}
{'a.b.c': 1}

下面的实际示例。

java prettyprint-override">import static com.google.common.collect.Maps.newLinkedHashMap;

import java.util.Map;
import javax.annotation.PostConstruct;

import lombok.Data;
import lombok.val;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Data
@Configuration
@ConfigurationProperties("hadoop")
public class HadoopProperties {

   private Map<Object, Object> properties = newLinkedHashMap();

}

application.yml:

hadoop:
   properties:
      fs.defaultFS: hdfs://localhost:8020
      mapred.job.tracker: localhost:8021

对结果对象调用ToString():

共有1个答案

壤驷志学
2023-03-14

我明白了。这是因为您绑定到一个非常通用的对象,所以Spring Boot认为您的句点分隔符是映射键取消引用。如果绑定到映射或属性会发生什么?

 类似资料:
  • 问题内容: 如果你这样做 然后,当您看着时,您就会得到。(很公平。) 如果这样做,您会得到。 基本上,我正在寻找一种将其转换为string的方法。 显然,在现实生活中,我无法控制JSON输入,而是从Web服务获取JSON …我想使用浏览器的JSON解析器解析JSON,并能够识别数字值和。 除了手动读取JSON字符串外,还有什么方法可以做到这一点?在这种情况下,这实际上是不可能的,为了提高速度,我需

  • 我正在尝试读取类似于我在Python中所做的YAML文件。但是我不知道如何使用任意键。我有以下我想阅读的YAML: 我知道如何读取文件,但只能使用空接口。我想把它作为我的项目类型的映射读入。 我在Stdout中得到的内容: 我想看到的是: 如何将我的 YAML 文件读入项目地图?

  • 问题内容: 我正在尝试使用Go解析YAML文件。问题在于YAML文件中的密钥可能并不总是相同。这是为了进行API版本控制,以便用户可以定义他们支持的版本。例如V1,V2,V3等。它们不需要按顺序排列,并且可以省略它们不支持的版本,例如V0,V2,V5等。 这是最高层,我还没有从结构内部弄清楚如何做到这一点。 问题答案: 首先,您尝试将根解析为,但其实际类型为。其次,如果要保留该类型结构,则需要一个

  • 我正在尝试使用 Go 解析 YAML 文件。问题是 YAML 文件中的键可能并不总是相同的。这是为了执行 API 版本控制,以便用户可以定义他们支持的版本。例如 V1、V2、V3 等。它们不需要按顺序排列,可以省略它们不支持的版本,即 V0、V2、V5 等。 我在这里看到一个类似的问题 这是顶层,我还没有完全弄清楚如何从结构内部执行此操作。

  • 问题内容: 如何在Python中解析YAML文件? 问题答案: 不依赖标头的最简单,最纯净的方法是(文档),可以通过以下方式安装: 就是这样。一个普通的函数也存在,但是除非你明确需要提供的任意对象序列化/反序列化,以避免引入执行任意代码的可能性,否则通常应首选该函数。

  • 这是我第一次使用YAML文件,所以我首先想到的是找到任何可以帮助我解析文件的库。 我找到了两个库,YamlBean和snakeyaml。我不确定我要用哪一个。 下面是我试图解析的文件的一个示例: 该文件将动态更改,所以我不知道该文件将包含多少用户或组。 有人能帮我开始吗?最好的图书馆是什么?YamlBean还是Snakeyaml? 我想,我需要将这些信息保存在一个可以轻松重复的东西中。