一个新项目需要用到jackson,就从另一个项目拷贝jackson的jar包,开始只是拷贝了几个名称包括jackson的jar包(原项目jar包非常多),发现编译没错误,但运行时报无法找到这个类那个类等等。现将所有依赖的jackson的jar列出来,以备后用。
具体包共享在百度圆盘上:http://pan.baidu.com/s/1c0LKdxe
Jackson包对json的使用?
首先需要导入jackson包,本文是对其基本对使用,能满足开发中很大一部分对需求,主要介绍的是:json,对象,map之间对转换。
1. Children类
package start.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @description:
* @author: 程志祥<[email protected]>
* @date: 2018/1/24 下午5:49
* @version: V1.0
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Children {
private String id;
private String cname;
private int num;
}
2. User类
package start.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @description:
* @author: 程志祥<[email protected]>
* @date: 2018/1/24 下午5:45
* @version: V1.0
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private String id;
private int age;
private Date date;
private Children children;
private List list;
private Set set;
private Map map;
}
3. JsonTest测试类
package start.entity;
import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
import java.util.*;
/**
* @description:
* @author: 程志祥<[email protected]>
* @date: 2018/1/24 下午5:51
* @version: V1.0
*/
public class JsonTest {
public static void main(String[] args) throws IOException {
// Children对象
Children children = Children.builder()
.id("1")
.cname("children01")
.num(1)
.build();
List<String> list = new ArrayList<>(5);
list.add("list01");
list.add("list02");
list.add("list03");
Set<String> set = new HashSet<>(5);
set.add("set01");
set.add("set02");
set.add("set03");
Map<Object, Object> map = new HashMap<>(5);
map.put("1","map01");
map.put("2","map02");
map.put("3","map03");
// User对象
User user = User.builder()
.id("1")
.name("user01")
.age(1)
.date(new Date())
.children(children)
.list(list)
.set(set)
.map(map)
.build();
// jackson 的转换器
ObjectMapper objectMapper = new ObjectMapper();
// 1. 对象 -> json
String json = objectMapper.writeValueAsString(user);
System.out.println(json);
/**
{"name":"user01","id":"1","age":1,"date":1516788284382
,"children":{"id":"1","cname":"children01","num":1}
,"list":["list01","list02","list03"]
,"set":["set02","set03","set01"]
,"map":{"1":"map01","2":"map02","3":"map03"}}
注意: (1). 日期--长整形
(2). List、Set会转成数组
*/
// 2. json-> Map
Map<Object,Object> map1 =objectMapper.readValue(json, Map.class);
System.out.println(map1.get("id").getClass().getName());
System.out.println(map1.get("name").getClass().getName());
System.out.println(map1.get("date").getClass().getName());
System.out.println(map1.get("list").getClass().getName());
System.out.println(map1.get("set").getClass().getName());
System.out.println(map1.get("map").getClass().getName());
System.out.println(map1.get("children").getClass().getName());
/**
*
java.lang.String
java.lang.String
java.lang.Long
java.util.ArrayList
java.util.ArrayList
java.util.LinkedHashMap
java.util.LinkedHashMap
注意: (1). 日期--长整型
(2). map、子对象 均转换成了LinkedHashMap
(3). List、Set会转成ArrayList
*
*/
// 3. Map -> json
json = objectMapper.writeValueAsString(map1);
System.out.println(json);
/**
{"name":"user01","id":"1","age":1,"date":1516845608920
,"children":{"id":"1","cname":"children01","num":1}
,"list":["list01","list02","list03"]
,"set":["set02","set03","set01"]
,"map":{"1":"map01","2":"map02","3":"map03"}}
注意: 跟对象->json一样
*
*/
// 4. json -> 对象
User user1 =objectMapper.readValue(json, User.class);
System.out.println(user1.getAge());
System.out.println(user1.getChildren().toString());
System.out.println(user1.getList().toString());
System.out.println(user1.getSet().toString());
System.out.println(user1.getMap().toString());
/**
1
Children(id=1, cname=children01, num=1)
[list01, list02, list03]
[set02, set03, set01]
{1=map01, 2=map02, 3=map03}
注意: 跟原始对象一样
*
*/
---------------------
作者:After_five_years
来源:****
原文:https://blog.****.net/czx1204/article/details/79158248
版权声明:本文为博主原创文章,转载请附上博文链接!