jackson dataformat yaml
jackson dataformat yaml,是用来读取yaml文件,并且反序列化到对象中的一个模块。
ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); User user = mapper.readValue(yamlSource, User.class);
示例代码:
-------
bjectMapper mapper = new ObjectMapper(new YAMLFactory());
String path = this.getClass().getResource("/test.yaml").getFile();
System.out.println(path);
User u2 = mapper.readValue(new File(path), User.class);
System.out.println(u2.id);
System.out.println(u2.name);
--------
jackson dataformat text
为什么要介绍jackson dataformat text呢?因为jackson dataformat yaml已经纳入到jackson dataformat text里面了。这个是好几个不同的类似于加载yaml, xml这里文件等。
这是一个用于Jackson标准文本格式数据格式后端的多模块总括项目。
Dataformat后端用于支持JSON的格式替代品,使用通用的Jackson API。包含允许的格式且种api风格(streaming, databinding, tree model)进行访问。
对于Jackson 2.x来说,这是通过对Jackson核心抽象的子类化来实现的。
所有后端子类JsonFactory,它是JsonParser的工厂。
JsonParser,用于读取数据(以支持的格式对数据进行解码编码)。
用于写入数据的JsonGenerator(使用支持的格式对数据进行编码)。
一些后端子类ObjectMapper用于额外的数据库绑定支持。
Jackson 3.0中会有一些变化(如引入特定格式的ObjectMapper子类)。
已经聊到这里了,我们再顺便看一看jackson吧。
jackson
jackson是java平台上最具影响力的标准json库,或者可以称为java最好的json解析器。另外,jackson也是一套适用于java(和JVM平台)的数据处理工具,包括旗舰级的流式JSON解析器/生成器库、匹配的数据绑定库(POJOs到JSON和来自JSON的数据绑定库),以及额外的数据格式模块,用于处理以Avro、BSON、CBOR、CBV、CSV、Smile、(Java)属性、Protobuf、XML或YAML编码的数据。甚至是支持Guava、Joda、PCollections等广泛使用的数据类型的大量数据格式模块。
虽然实际的核心组件都在自己的项目下,包括三个核心包(流媒体、databind、注释)、数据格式库、数据类型库、JAX-RS提供者、以及其他一系列的扩展模块,但这个项目是连接所有组件的中心枢纽。
目前我用到的就是简单的序列化,反序列化功能。下面有几个例子。
jason 的简单示例
要使用的话,需要导入相应库。
依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
代码示例。Foo的代码就不贴了。自己创建的时候注意要创建构造函数,默认构造函数,这样才能成功序列化反序列化。如果属性不是public的,还需要getter和setter才能成功序列化。当然,下面的代码请创建getter setter,因为用到了。
-----------
@Test
public void whenSerializeAndDeserializeUsingJackson_thenCorrect()
throws IOException {
Foo foo = new Foo(1,"first");
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(foo);
Foo result = mapper.readValue(jsonStr, Foo.class);
assertEquals(foo.getId(),result.getId());
}
----------
这里简单解说一下readValue和writeValue,还其他其他好些输入输出流,如文件,url等。要用的时候自己再查吧。