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