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

摘要:
最近,由于涉及的功能,Nacos配置信息需要通过代码发布。在此过程中,涉及将字符串转换为Map以及将Map转换为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格式,简略信息如下:

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

 对于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及以上版本,文档信息如下:

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

 这里的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、效果展示

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

免责声明:文章转载自《Java中针对Yaml格式数据操作记录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android 菜单(OptionMenu)大全 建立你自己的菜单Android : apk签名的多种方法以及key的配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 中使用Jackson反序列化

Build.gradle: compile group: 'org.codehaus.jackson', name: 'jackson-mapper-lgpl', version: '1.9.13' compile group: 'org.codehaus.jackson', name: 'jackson-core-lgpl', version: '...

C#中常用的经典文件操作方法

 C#追加文件 StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); sw.WriteLine("追逐理想"); sw.WriteLine("kzlll"); sw.WriteLine(".NET笔记"); sw.Flush(); sw.Close(); C#拷贝文件...

redis 在 php 中的应用(key篇)

本文为我阅读了redis参考手册之后结合博友的博客编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: KEY(键) DEL EXISTS EXPIRE EXPIREAT keys MOVE PERSIST TTL RANDOMKEY RENAME RENAMENX TYPE SORT KEY(...

Java用SAX解析XML

要解析的XML文件:myClass.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <class> 3 <stu id="001"> 4 <name>Allen</name> 5 <sex>男</sex> 6 &l...

series和读取外部数据

1、为什么学习pandas 我们并不是不愿意学习新的知识,只是在学习之前我们更想知道学习他们能够帮助我们解决什么问题。——伟哥 numpy虽然能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据(字符串、时间序列等等) 2、什么是pandas pandas is an open source, BSD-...

c# 免注册调用大漠插件100%完美识别文字

c#免注册调用大漠插件100%完美识别文字 下载:https://download.csdn.net/download/xxq931123/10875122 绑定 模式:http://zy.anjian.com/?action-viewthread-tid-239647 test 发QQ消息: public MainForm() {...