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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM