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等。要用的時候自己再查吧。

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章