使用 SnakeYAML 操作 YAML 数据
文章目录
- 1. 接触背景
- 2. 使用介绍
1. 接触背景
公司这边有一部分项目是用 Ruby 实现的。而 Ruby 同事喜欢在数据库存储yaml
文本,最近使用 Java 重构 Ruby 项目,就遇到了解析yaml
文本的问题,所以研究了下SnakeYAML
这个库。
一般他们会在相关表中的text
类型的字段中存储yaml
文本,Java 程序员一般是存储json
文本。下面就说下我解析该类型字段的过程。目前遇到的有两种 Ruby 项目存储的yaml
文本。
(1)没有ruby
头的yaml
文本:
---
- title: "正常"next_level: '5'color: "#32FE40"
- title: "延迟"next_level: '10'color: "#F6FF19"
- title: "超时"next_level: '15'color: "#FF3E3E"
- title: "严重超时"next_level: '20'color: "#FFFFFF"
这种直接使用SnakeYAML
可以直接解析。
import org.yaml.snakeyaml.Yaml;
...
Yaml yaml = new Yaml();
List<Map> list = yaml.loadAs(yamlStr, List.class);
(2)有ruby
头的yaml
文本:
---
- !ruby/hash:ActionController::Parameterstitle: "处理中"next_level: '3'color: "#15E584"
- !ruby/hash:ActionController::Parameterstitle: "已超时"next_level: '5'color: "#EB8212"
- !ruby/hash:ActionController::Parameterstitle: "严重超时"next_level: '10'color: "#F10F64"
可以看到,该yaml
文本有一个!ruby/hash:ActionController::Parameters
标记。咨询了 Ruby 同事,说是和 Ruby 的版本有关,他们进行了版本更新,数据库中新数据都会带这个头。如果此时还直接用上面的方法解析,会报一个错误:
Exception in thread "main" Can't construct a java object for !ruby/hash:ActionController::Parameters; exception=Invalid tag: !ruby/hash:ActionController::Parametersin 'string', line 2, column 3:- !ruby/hash:ActionController::Par ... ^
所以,需要将这个头删除掉,直接替换为空串,就能正常处理了。
import org.yaml.snakeyaml.Yaml;yamlStr = yamlStr.replace("!ruby/hash:ActionController::Parameters", "");
Yaml yaml = new Yaml();
List<Map> list = yaml.loadAs(yamlStr, List.class);
2. 使用介绍
具体使用可以直接参考官方文档:
- YAML 官方文档。
- SnakeYAML 官方使用文档。
参考博客:
- YAML 语法。
- YAML 语言教程。
- JAVA使用SNAKEYAML解析YAML。
使用 SnakeYAML 操作 YAML 数据相关推荐
- java中snakeyaml工具包操作yaml文件,什么是yaml文件,yaml如何解析转换为实体,实体如何生成yaml文件
什么是yaml文件 这里就不去搞yaml的书面意思了,其实就可以理解为一种数据文件,里面的数据是以键值对的方式存储的.java中map就是键值对的形式,我们带着这个概念去理解.举个例子: school ...
- python操作配置文件yaml数据读取数据写入
YAML 语言:它实质上是一种通用的数据串行化格式 一.yaml基本语法规则: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格 缩进的空格数目不重要,只要相同层级的元素左侧 ...
- yaml及使用PyYaml操作yaml文件详解
1.yaml主要用途 YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便. 2.yaml支持的数据结构 数据结构名称 包含的数据类型 描述说明 纯量 字符串.布尔值.整数. ...
- pyyaml操作yaml配置文件基于python
在测试工作中,可以使用yaml编写测试用例,执行测试用例时直接获取yaml中的用例数据进行测试(如:接口自动化测试) 1.什么是yaml 是一种可读的数据序列化语言,通常用于配置文件 非常简洁和强大, ...
- Python之-操作yaml
操作yaml文件 1.yaml介绍 yaml:Yet Another Markup Language的缩写.Yaml是专门用来写配置文件的语言,非常简洁和强大,远比json格式方便. Python搭建 ...
- 使用Dom4j操作XML数据
--------------siwuxie095 dom4j 是一个非常优秀的 Java XML 的 API, 用来读写 XML 文件 和操作 XML 数据 特点:性能优异.功能强大.极端易用 dom ...
- nodejs操作sqlserver数据_pyspark操作MySQL、SQLServer数据库进行数据处理操作
欢迎访问本人的CSDN博客[Together_CZ],我是沂水寒城. https://yishuihancheng.blog.csdn.net 在大数据处理领域里面,Hadoop和spark可以说是最 ...
- python操作yaml的方法详解
这篇文章主要为大家介绍了python操作yaml的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 一.参考链接 https://pyyaml.org/wiki/PyYAM ...
- R语言使用sqldf包按照SQL语法操作dataframe数据(Using SQL statements to manipulate data frames)
R语言使用sqldf包按照SQL语法操作dataframe数据(Using SQL statements to manipulate data frames) 目录
- hive删除hbase数据_Hive进阶:Hive通过外部表操作Hbase数据
概述: HBase: 查询效率比较高,常为实时业务提供服务,但是其查询方式比较单一,只能通过row方式get单条数据,或者通过scan加过滤器的方式扫描数据表获取数据. Hive: hive用来存储结 ...
最新文章
- hdu 1879 继续畅通工程
- 除了 AI,这些技术为 IIoT 插上飞向“4.0”的翅膀
- Java中New一个对象是个怎么样的过程?
- live联系人导出到CSV乱码
- Android应用开发:网络编程-2
- Python--strip()学习记录
- 软考-信息系统项目管理师-立项管理
- 原生JS封装时间运动函数
- ajax读取.txt文件出现乱码
- huffman编码的程序流程图_F28379D之CLB解码多摩川编码器2——LIB版例程讲解(原创)...
- sharepoint被阻止的文件类型解释说明
- 图解wordpress模板架构
- 持续图片滚动字幕html,使用JavaScript实现连续滚动字幕效果的方法
- 全国面向小学五六年级及初一的舞蹈方向的艺术学校舞蹈学校整理
- [NISACTF 2022]
- cpm,cpc,cps和cpa分别是什么意思
- shell遍历ip执行特定功能
- roc曲线怎么绘制_Excel怎么绘制曲线图?Excel绘制曲线图教程
- sigmoid和softmax
- c++ 不撞南墙不回头——树形动态规划(树规)
热门文章
- win10计算机本地组策略编辑器,Win10家庭版没有本地组策略编辑器怎么办
- matlab 对直方图均衡化,基于直方图均衡化的图像增强技术分析与Matlab实现_直方图均衡化matlab...
- Charles中文破解版下载安装及使用教程(附带免费下载链接)
- FPGA按键消抖—两种按键消抖形式的对比
- YUV的原始数据文件转rgb使用cv2显示
- 7,Matlab实现末端轨迹跟踪
- 使用EasyPoi完成复杂一对多excel表格导出功能
- TikTok和抖音差别大吗?
- 跟大家分享一下牛人常用的资源(牛客网 )!
- python英文参考文献格式_英文论文参考文献标准格式