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对象转换 之四的更多相关文章

  1. jackson 进行json与java对象转换 之三

    2.测试类,没用Junit,用Main()方法输出. package test; import java.io.IOException; import java.util.ArrayList; imp ...

  2. jackson 进行json与java对象转换 之二

    主要用于测试学习用jackson包实现json.对象.Map之间的转换. 1.准备测试用的Java类 (1)Link类 package test; /** * Description: 联系方式,被u ...

  3. jackson 进行json与java对象转换 之一

    代码无真相,为了最简单的说明,我直接上代码. public class User { private String name; private Gender gender; private List& ...

  4. FastJson、Jackson、Gson进行Java对象转换Json细节处理

    前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...

  5. FastJson、Jackson、Gson进行Java对象转换Json的细节处理

    前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...

  6. JSON 与JAVA对象之间的转换(转)

    JSON与XML两者目前在数据交互方面都有很高的使用率,随着现在SOA的兴起,异构系统的整合地位相应提高,本篇文章主要介绍JSON与JAVA对象之间的相互转换. 一.对普通类型的JSON模式的转换 一 ...

  7. Java对象转换成xml对象和Java对象转换成JSON对象

    1.把Java对象转换成JSON对象 apache提供的json-lib小工具,它可以方便的使用Java语言来创建JSON字符串.也可以把JavaBean转换成JSON字符串. json-lib的核心 ...

  8. JAVA对象转换JSON

    1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码 代码如下: JSONArray array = JSONArray.fromObject(userlist); String ...

  9. JSON与Java对象的互相转换

    JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do") @ResponseBody public JSONObject ...

随机推荐

  1. jsp 内置对象---EL

    ServletRequest : java.lang.String      getParameter(java.lang.String name) 返回一个string           对应 n ...

  2. vue中编辑代码是不注意格式时会报错

    1.是因为我们使用了eslint的代码规范,我们不要使用这种规范就好 2.在build目录下找到webpack.base.conf.js 在里面找到关于eslint的相关配置注释或移除掉就好

  3. Liberty glance 新功能 healthcheck

    oslo.middleware‘s healthcheck http://specs.openstack.org/openstack/oslo-specs/specs/kilo/oslo-middle ...

  4. html5学习(新增元素)

    来源于<实战html5>contenteditable 规定是否可编辑元素的内容 css3圆角 border-radius旋转变换 transform:rotate(); 变换 trans ...

  5. 智课雅思词汇---十五、前缀co-com-con-col-cor-是什么意思

    智课雅思词汇---十五.前缀co-com-con-col-cor-是什么意思 一.总结 一句话总结:前缀:co- 表示"共同", 通常放在元音词根前 1.前缀co-com-con- ...

  6. Linux开放端口

    开放端口8081 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT 重启端口服务 ser ...

  7. 机器学习(二十七)— EM算法

    1.EM算法要解决的问题 如果使用基于最大似然估计的模型,模型中存在隐变量,就要用EM算法做参数估计. EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜 ...

  8. 为mac终端添加tree命令

    原文:http://superuser.com/questions/359723/mac-os-x-equivalent-of-the-ubuntu-tree-command/ 整理步骤如下: $ t ...

  9. oracle管理优化必备语句以及oracle SQL语句性能调整

    本文转自http://www.dataguru.cn/article-3302-1.html oracle数据库管理优化必备语句: 1. SELECT T.START_TIME,T.USED_UBLK ...

  10. 验证实现element-ui树形控件的自定义图标及右键菜单

    许久不用,element-ui已经更新至2.4.1版本.直接进入今天的正题,前提是node.js的环境还有vue及elment-ui都已经安装.由于element-ui的官方文档中介绍比较粗略,试了许 ...