博客
关于我
Java解析yaml
阅读量:628 次
发布时间:2019-03-14

本文共 2583 字,大约阅读时间需要 8 分钟。

读取YAML文件并转换为Map的处理流程如下:

代码解释

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.Map;
import org.yaml.snakeyaml.Yaml;
public class YAMLTest {
public static void main(String[] args) throws Exception {
// 读取YAML文件
Yaml yaml = new Yaml();
File file = new File("D:/test.yaml");
Object load = yaml.load(new FileInputStream(file));
// 另一种常见方法:直接读取资源文件
// InputStream io = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.yml");
// Object load = yaml.load(io);
System.out.println("加载结果:\n" + yaml.dump(load));
System.out.println(" ############################################################################# ");
// 将YAML文件转换为Map
Map
map = (Map
) yaml.load(new FileInputStream(file));
System.out.println("转换后的Map:\n" + yaml.dump(map));
System.out.println(" ############################################################################# ");
// 遍历Map中的键值对
Iterator
> entryIterator = map.entrySet().iterator();
while (entryIterator.hasNext()) {
Map.Entry
entry = entryIterator.next(); String key = entry.getKey(); Object value = entry.getValue(); if (key.equals("ip") || key.equals("port")) { String valueStr = (String) value; System.out.println("键值对:" + key + ":" + valueStr); } else { System.out.println("这是一个嵌套的Map结构,处理方式如下:"); if (key.equals("server")) { Map
subMap = (Map
) value; Iterator
> subEntryIterator = subMap.entrySet().iterator(); while (subEntryIterator.hasNext()) { Map.Entry
subEntry = subEntryIterator.next(); String subKey = subEntry.getKey(); Object subValue = subEntry.getValue(); if (subKey.equals("port2")) { System.out.println("子键:" + subKey + ":" + subValue); } } } else { System.out.println("普通键值对:" + key + ":" + value); } } System.out.println(" ############################################################################# "); } } }

运行结果展示

ip: 192.168.102.31
port: 7788
spring:
application: {name: cruncherserver: {port2: 9000}}
monitor_nic:
nic: {name: ethA, slot: 0, cpu: 0}
#############################################################################
这一行用于分隔代码输出和解释段
键值对:ip: 192.168.102.31
键值对:port: 7788
这是一个嵌套的Map结构,处理方式如下:
普通键值对:spring: {application={name=cruncher}}
键值对:server: {port=9000}
键值对:monitor_nic: {nic={name=ethA, slot=0, cpu=0}}

Maven依赖说明

org.yaml
snakeyaml
1.26

转载地址:http://ednoz.baihongyu.com/

你可能感兴趣的文章
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>
Node-RED中使用range范围节点实现从一个范围对应至另一个范围
查看>>
Node-RED中实现HTML表单提交和获取提交的内容
查看>>
Node-RED中将CSV数据写入txt文件并从文件中读取解析数据
查看>>
Node-RED中建立TCP服务端和客户端
查看>>
Node-RED中建立Websocket客户端连接
查看>>
Node-RED中建立静态网页和动态网页内容
查看>>
Node-RED中解析高德地图天气api的json数据显示天气仪表盘
查看>>
Node-RED中连接Mysql数据库并实现增删改查的操作
查看>>
Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
查看>>
Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
查看>>
Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
查看>>
Node-RED怎样导出导入流程为json文件
查看>>
Node-RED订阅MQTT主题并调试数据
查看>>
Node-RED通过npm安装的方式对应卸载
查看>>