Jackson Gson Json.simple part 2
这篇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(); // javabean
ObjectMapper 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);