使用jackson

jackson的解析性非常的棒,今天我们来学习一下jackson的用法。


jackson需要依赖三个jar包:

<dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-core</artifactId>
    	<version>2.9.5</version>
	</dependency>
	<dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-databind</artifactId>
   	 <version>2.9.5</version>
	</dependency>
	<dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-annotations</artifactId>
    	<version>2.9.5</version>
	</dependency>

一、先来试试把对象转成json格式

public class Book {

	private int id;
	private String name;
	private double price;
	public Book() {
		
	}
	public Book(int id, String name, double price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
	//省略set/get方法
}
public static void main(String[] args) throws JsonProcessingException {
		
		ObjectMapper mapper=new ObjectMapper();
        Book book=new Book();
        book.setId(1);
        book.setName("三国演义");
        book.setPrice(39.90);
        String jsonStr=mapper.writeValueAsString(book);
        System.out.println(jsonStr);

	}
看结果:
{"id":1,"name":"三国演义","price":39.9}

二、复杂一点的对象

public class User {

	private int id;
	private String name;
	private String pwd;
	private List<Book> bookList;
	public User() {
		// TODO Auto-generated constructor stub
	}
	public User(int id, String name, String pwd, List<Book> bookList) {
		super();
		this.id = id;
		this.name = name;
		this.pwd = pwd;
		this.bookList = bookList;
	}
	//省略set/get方法
	
}
public class Book {

	private int id;
	private String name;
	private double price;
	public Book() {
		
	}
	public Book(int id, String name, double price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
	//省略set/get方法
}
    ObjectMapper mapper=new ObjectMapper();
    Book book=new Book(1, "三国演义", 39.90);
    User user=new User(1, "张三", "password", book);
    String jsonStr=mapper.writeValueAsString(user);
    System.out.println(jsonStr);
结果:
{"id":1,"name":"张三","pwd":"password","book":{"id":1,"name":"三国演义","price":39.9}}

三、对象属性为list集合

        private int id;
	private String name;
	private String pwd;
	private List<Book> bookList;
	public User() {
		// TODO Auto-generated constructor stub
	}
	public User(int id, String name, String pwd, List<Book> bookList) {
		super();
		this.id = id;
		this.name = name;
		this.pwd = pwd;
		this.bookList = bookList;
	}
        //省略set/get方法
        private int id;
	private String name;
	private double price;
	public Book() {
		
	}
	public Book(int id, String name, double price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
        ObjectMapper mapper=new ObjectMapper();
	List<Book> bookList=new ArrayList<Book>();
	Book book1=new Book(1, "三国演义", 39.90);
	Book book2=new Book(2, "西游记", 49.90);
	Book book3=new Book(3, "水浒传", 59.90);
	Book book4=new Book(4, "红楼梦", 69.90);
	bookList.add(book1);
	bookList.add(book2);
	bookList.add(book3);
	bookList.add(book4);
	User user=new User(1001, "张三", "password", bookList);
	String jsonStr=mapper.writeValueAsString(user);
	System.out.println(jsonStr);
结果:
{"id":1001,"name":"张三","pwd":"password","bookList":[{"id":1,"name":"三国演义","price":39.9},{"id":2,"name":"西游记","price":49.9},{"id":3,"name":"水浒传","price":59.9},{"id":4,"name":"红楼梦","price":69.9}]}

四、单纯的list集合转换

        ObjectMapper mapper=new ObjectMapper();
	List<Book> bookList=new ArrayList<Book>();
	Book book1=new Book(1, "三国演义", 39.90);
	Book book2=new Book(2, "西游记", 49.90);
	Book book3=new Book(3, "水浒传", 59.90);
	Book book4=new Book(4, "红楼梦", 69.90);
	bookList.add(book1);
	bookList.add(book2);
	bookList.add(book3);
	bookList.add(book4);
	String jsonStr=mapper.writeValueAsString(bookList);
	System.out.println(jsonStr);
结果:
[{"id":1,"name":"三国演义","price":39.9},{"id":2,"name":"西游记","price":49.9},{"id":3,"name":"水浒传","price":59.9},{"id":4,"name":"红楼梦","price":69.9}]

五、map集合

        ObjectMapper mapper=new ObjectMapper();
	List<Book> bookList=new ArrayList<Book>();
	Map<String, Object> map=new HashMap<String, Object>();
	Book book1=new Book(1, "三国演义", 39.90);
	Book book2=new Book(2, "西游记", 49.90);
	bookList.add(book1);
	bookList.add(book2);
	User user=new User(1001, "张三", "password", bookList);
	map.put("book1", book1);
	map.put("book2", book2);
	map.put("user", user);
	String jsonStr=mapper.writeValueAsString(map);
	System.out.println(jsonStr);
结果:
{"book2":{"id":2,"name":"西游记","price":49.9},"book1":{"id":1,"name":"三国演义","price":39.9},"user":{"id":1001,"name":"张三","pwd":"password","bookList":[{"id":1,"name":"三国演义","price":39.9},{"id":2,"name":"西游记","price":49.9}]}}

可以看出jackson对于把数据转换为json格式的数据很是方便。

那么如何把json数据反过来转换为对象呢?

一、转换普通对象

        ObjectMapper mapper=new ObjectMapper();
	String jsonStr="{\"id\":1,\"name\":\"三国演义\",\"price\":39.9}";
	Book book=mapper.readValue(jsonStr, Book.class);
	System.out.println(book);
结果:
Book [id=1, name=三国演义, price=39.9]

json数据转map集合

        ObjectMapper mapper=new ObjectMapper();
	String jsonStr="{\"username\":\"张三\",\"password\":\"123456\"}";
	Map<String, String> map=mapper.readValue(jsonStr, new TypeReference<Map<String, String>>() {});
	for (String key : map.keySet()) {
		System.out.println(key+"="+map.get(key));
	}
结果:
username=张三
password=123456

json转list

        ObjectMapper mapper=new ObjectMapper();
	String jsonStr="[\"1001\",\"张三\",\"123456\"]";
	List<String> list=mapper.readValue(jsonStr, new TypeReference<List<String>>() {});
	for (String str : list) {
		System.out.println(str);
	}
结果:
1001
张三
123456
以前光听别人说jackson很好用,没想到会这么好用。。。。。。。













猜你喜欢

转载自blog.csdn.net/xkfanhua/article/details/80311874