Java中针对Yaml格式数据操作记录

写在前面

最近由于涉及的功能需要对Nacos配置信息通过代码实现发布,在此过程中,涉及到String字符串转换Map,Map转换为Yaml格式的字符串等方法,由于之前没有接触过此方面内容,所以特在此进行记录,以做备忘!

1、Nacos获取配置

Nacos获取配置信息,返回结果为String格式字符串,这里可以参看Nacos中文文档(地址为:https://nacos.io/zh-cn/docs/sdk.html )中Java SDK提供的方法,具体如下:

try {
    String serverAddr = "{serverAddr}";
    String namespace = "{namespace}";
    String dataId = "{dataId}";
    String group = "{group}";
    Properties properties = new Properties();
    properties.put("serverAddr", serverAddr);
        properties.put("namespace", namespace);
    ConfigService configService = NacosFactory.createConfigService(properties);
    String content = configService.getConfig(dataId, group, 5000);
    System.out.println(content);
} catch (NacosException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

由于Nacos配置信息为Yaml格式,简略信息如下:

 对于Nacos配置操作时,需要修改相关配置,因此需要将String格式转换为Map格式操作,此时,对应的Yaml操作如下:

1> Maven项目中导入pom依赖

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.26</version>
</dependency>

2> 使用Yaml方法操作,具体方法如下:

Yaml yaml = new Yaml();
//将Nacos配置信息content字符串转成 Map形式
Map<String,Object> map = yaml.load(content);

2、Nacos发布配置

Nacos发布配置,需要将之前修改的Map格式的配置信息,转换为String格式进行发布,具体方法同样可以参看Nacos中文文档中Java SDK中的方法,具体如下:

说明:由于Nacos配置格式为Yaml格式,这里nacos-client对应的依赖版本为1.4.1及以上版本,文档信息如下:

 这里的type变量定义,可以参看下面定义方式:

private final String type = ConfigType.YAML.getType();

Nacos配置发布方法如下:

try {
    // 初始化配置服务,控制台通过示例代码自动获取下面参数
    String serverAddr = "{serverAddr}";
   String namespace = "{namespace}"; String dataId
= "{dataId}"; String group = "{group}"; Properties properties = new Properties(); properties.put("serverAddr", serverAddr); properties.put("namespace", namespace); ConfigService configService = NacosFactory.createConfigService(properties); boolean isPublishOk = configService.publishConfig(dataId, group, "content", type); System.out.println(isPublishOk); } catch (NacosException e) { // TODO Auto-generated catch block e.printStackTrace(); }

如上方法可见,发布配置内容为String 字符串格式,所以需要将Map格式转换为String格式,其中String格式内容需要按照Yaml格式展示,这里涉及到的方法如下:

Yaml yaml = new Yaml();
//将Map转换成 YAML 字符串
String yamlStr = yaml.dumpAsMap(map);

3、效果展示

遨游在代码世界里的一条不知名的小船。。。。。。
原文地址:https://www.cnblogs.com/cndarren/p/14434893.html