jackson dataformat yaml简介及使用

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

https://github.com/FasterXML/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等。要用的时候自己再查吧。

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值