標籤:style blog io ar color 使用 sp java 檔案
這篇blog介紹 Jackson 的特點和使用方法
Jackson支援三種使用方法
- 流API(streaming api Incremental parsing/generation)
- JsonParse reads, JsonGenerator writes
- 高效
- 和part 1 json的用法類似,不好用
- 樹形模型
- ObjectMapper用來建樹,和JsonNode配合使用
- 資料繫結
- Json與POJO相互轉換
- 簡單資料轉換 簡單對象是指java中的map, list等等
- 全資料轉換 自訂的javabean
使用者的角度來評價這三種使用方法
- 流模式最高效,速度快,記憶體佔用少
- 資料繫結最方便
- 樹形模型最靈活
例子:
資料繫結例子
Javabean -> Json
User user = new User(); // javabeanObjectMapper mapper = new ObjectMapper();mapper.writeValue(new File("/Users/sangs/Downloads/json.txt"), user); // 寫入檔案System.out.println(mapper.writeValueAsString(user));
Json -> Javabean
ObjectMapper mapper = new ObjectMapper();User user = mapper.readValue(new File("/Users/sangs/Downloads/json.txt"), User.class);System.out.println(user);
Javabean 和 Json轉換相當簡單,看起來也直觀,僅需要一個轉換器ObjectMapper
未經處理資料到Json的轉換
假如我們有未經處理資料,我們希望能夠直接使用這些資料拼成Json,這個Json以後還能被轉化為javabean
Map<String,Object> userData = new HashMap<String,Object>();Map<String,String> nameStruct = new HashMap<String,String>();nameStruct.put("first", "Joe");nameStruct.put("last", "Sixpack");userData.put("name", nameStruct);userData.put("gender", "MALE");userData.put("verified", Boolean.FALSE);userData.put("userImage", "Rm9vYmFyIQ==");mapper.writeValue(new File("user-modified.json"), userData);
Jackson Gson Json.simple part 2