Springboot底层-snakeyaml的使用
所用依赖
目前最稳定的版本为1.25版,最新版为1.28版。
下载链接:
来源:http://bitbucket.org/asomov/snakeyaml/src
JAR包:https://repo1.maven.org/maven2/org/yaml/snakeyaml/1.25/snakeyaml-1.25.jar
Android包:https://repo1.maven.org/maven2/org/yaml/snakeyaml/1.25/snakeyaml-1.25-android.jar
发行版在中央存储库中可用。
依赖项定义(在pom.xml中)
Android项目的依赖项定义
使用教程
首先实例化org.yaml.snakeyaml.Yaml实例。
加载YAML
方法yaml.load()
可以将YAML文档转换为Java对象。
yaml.load()
接受String或InputStream对象。yaml.load(InputStream stream)
通过检查流开始处的BOM(字节顺序标记)序列来检测编码。如果没有BOM,则假定为utf-8编码。
yaml.load()
返回一个Java对象。
如果字符串或流包含多个文档,则可以使用yaml.loadAll()
方法将它们全部加载。
仅在调用迭代器时才对文档进行解析(懒加载)。
SnakeYAML允许您构造任何类型的Java对象。
甚至可以构造自定义Java类的实例。
注意:如果要将对象限制为标准Java对象(如List或Long),则需要使用SafeConstructor。
提供顶级类型
它可以加载没有任何显式标签的YAML文档。
在“Invoice”,“Person”,“,Address”,“Product”实例中,必须提供对象层次结构中的顶级类:
SnakeYAML使用Reflection API查找发票上所有属性(设置程序和公共字段)的类。不幸的是,您无法在运行时对类型安全集合进行删除操作。<>
之间的类信息仅在编译时可用。
隐式类型
当未明确定义标量节点的标签时,SnakeYAML会尝试检测将正则表达式应用于标量节点内容的类型。
类型安全集合
当类型安全(通用)集合是JavaBean的属性时,SnakeYAML会动态检测所需的类。
如果泛型类型是抽象类(接口),则它将不起作用。
您必须在YAML中放置一个显式标签或提供显式TypeDescription
。 TypeDescription
的目标是收集更多信息并在加载/转储时使用它。
假设文档为如下内容:
现在我们想加载这个类型:
其中“wheels”属性是List<Wheel>
。为了加载Car
(并创建List<Wheel>
),您必须提供TypeDescription
:
这种方式也适用于Map
。注意,Map
的key和value都可以是任意类型:
以下是要加载的类:
主要代码:
转储YAML
Yaml.dump(Object data)
方法接受一个Java对象并生成一个YAML文档。
Yaml.dump(Object data, Writer output)
会将生成的YAML文档写入指定的文件/流。
如果需要将多个YAML文档转储在同一个文件/流中,请使用yaml.dumpAll(Iterator<Object> data)
方法。它接受要序列化为YAML文档的Java对象的迭代器。也可以使用Writer。
您也可以转储JavaBean。
如你所见,JavaBean的属性按字母顺序排列。
DumperOptions
指定转储的格式信息。例如,您可以设置优先级和宽度,使用规范的YAML格式或者对常量和集合强制使用首选样式。
规范格式: