jackson 进行json与java对象转换 之四
jackson简单使用,对象转json,json转对象,json转list
POJO序列化为json字符串:
准备一个POJO:

@JsonIgnoreProperties(ignoreUnknown = true)
class User implements Serializable {
private static final long serialVersionUID = -5952920972581467417L;
private String name; public User() {
} public User(String name) {
this.name = name;
} public String getName() {
return name;
} @Override
public String toString() {
return "User{" +
"name=" + name +
'}';
}
}

@JsonIgnoreProperties(ignoreUnknown = true) 是为了反序列化的时候,如果遇到不认识的filed,忽略之
- 无参构造函数是为了在反序列化的时候,jackson可以创建POJO实例
- getter方法是为了序列化的时候,jackson可以获取filed值
- toString是方便我自己debug看显示
- 至于Serializable,习惯的给实体增加一个持久化的能力。
通过write来转化成jason字符串:
String expected = "{\"name\":\"Test\"}";
String test = mapper.writeValueAsString(new User("Test"));
Assert.assertEquals(expected, test);
通过read来parse json字符串为POJO对象:
User user = mapper.readValue(expected, User.class);
Assert.assertEquals("Test", user.getName());
jsonArray转换成Array数组:
String expected = "[{\"name\":\"Ryan\"},{\"name\":\"Test\"},{\"name\":\"Leslie\"}]";
ArrayType arrayType = mapper.getTypeFactory().constructArrayType(User.class);
User[] users = mapper.readValue(expected, arrayType);
Assert.assertEquals("Ryan", users[0].getName());
jsonArray转换成List<>泛型:

expected="[{\"a\":12},{\"b\":23},{\"name\":\"Ryan\"}]";
CollectionType listType = mapper.getTypeFactory().constructCollectionType(ArrayList.class, User.class);
//the sieze of the list is dependon the str json length although the json content is not the POJO type maybe
List<User> userList = mapper.readValue(expected, listType);
Assert.assertEquals(3, userList.size());
Assert.assertNull(userList.get(0).getName());
Assert.assertEquals("Ryan",userList.get(2).getName());

jackson默认将对象转换为LinkedHashMap:
String expected = "[{\"name\":\"Ryan\"},{\"name\":\"Test\"},{\"name\":\"Leslie\"}]";
ArrayList arrayList = mapper.readValue(expected, ArrayList.class);
Object o = arrayList.get(0);
Assert.assertTrue(o instanceof LinkedHashMap);
转载:http://www.cnblogs.com/woshimrf/p/5847262.html
jackson 进行json与java对象转换 之四的更多相关文章
- jackson 进行json与java对象转换 之三
2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...
- jackson 进行json与java对象转换 之二
主要用于测试学习用jackson包实现json.对象.Map之间的转换. 1.准备测试用的Java类 (1)Link类 package test; /** * Description: 联系方式,被u ...
- jackson 进行json与java对象转换 之一
代码无真相,为了最简单的说明,我直接上代码. public class User { private String name; private Gender gender; private List& ...
- FastJson、Jackson、Gson进行Java对象转换Json细节处理
前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...
- FastJson、Jackson、Gson进行Java对象转换Json的细节处理
前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...
- JSON 与JAVA对象之间的转换(转)
JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...
- Java对象转换成xml对象和Java对象转换成JSON对象
1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...
- JAVA对象转换JSON
1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码 代码如下: JSONArray array = JSONArray.fromObject(userlist); String ...
- JSON与Java对象的互相转换
JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do") @ResponseBody public JSONObject ...
随机推荐
- 字符在内存中最终的表示形式是什么?是某种字符编码还是码位(Code Point)?
字符在内存中最终的表示形式是什么?是某种字符编码还是码位(Code Point)? 根据我的了解,编码中有三个核心概念:1. 字符集(Character Set),可以说是一个抽象概念,字符的合集2. ...
- pf_ring DNA接收流程代码分析
经过一个月的学习,对pf_ring DNA的内核部分有了一些认识,本文侧重pf_ring对ixgbe的改动分析. 先说一说接收流程吧,流程如下: 其中,硬中断处理函数是ixgbe_msix_clean ...
- HRBUST 2072 树上求最大异或路径值
一个很经典的套路 思想是 F [u,v] = F[1,u] ^ F[1,v] 这样就转化成了n个数两两异或 求最大值 可以用字典树来做 每次用当前数去树中寻求最大xor值 然后把这个数字插进去 就相当 ...
- ztree高级实例(原创)
最近项目中需要设计一个类似收藏夹的功能保存用户常用的东西,需要客户体验好,所以想到了以前用过的ztree. 在用ztree的过程中遇到一些问题,在此记录,提醒自己,也帮助遇到相同情况的同行们. 1.至 ...
- shell学习之常用技巧
cut 切割,-d分隔符,-f指定段号,-c指定第几个字符.d,f用的多些. sort排序,-n按照数字排序,-r反排序. wc -l 查看文件行数. 大道至简,掌握常用的命令就可以了. uniq去重 ...
- review03
class XiyoujiRenwu{ float height; float weight; String head; String ear; void speak(String s) { Syst ...
- bootstrap参考网站
http://www.chuntao.org.cn/http://www.dianxiaohuo.com/
- Template、ItemsPanel、ItemContainerStyle、ItemTemplate(包括ListBox的Item子项是横向排列)
Template.ItemsPanel.ItemContainerStyle.ItemTemplate 分类: WPF2011-10-12 10:13 4716人阅读 评论(0) 收藏 举报 data ...
- 用Find命令查找文件
➜ AFNetworking find . -iname "*.swift" ./Example/tvOS Example/AppDelegate.swift ./Example/ ...
- this license has been cancelled
是因为IDEA注册码的问题, 解决方案: 修改此路径的hosts文件:C:\Windows\System32\drivers\etc\hosts 在其最后一行加入:“0.0.0.0 account.j ...