欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jackson序列化和反序列化java对象

程序员文章站 2022-06-16 12:38:01
...

        哈喽,大家好,今天要跟大家分享的是Jackson序列化和反序列化JSON,相信点击进来的家人们,都是为了看代码的,那梦梦就废话不多说了,直接上操作了。

        首先,我们先编写一个实体类——产品类。

public class Product {
	private Integer id;
	private String name;
    private Integer price;
    private Date birthday;
    
    public Product(Integer id, String name, Integer price, Date birthday) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.birthday = birthday;
    }

    public Product() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getPrice() {
        return price;
    }

    public void setPrice(Integer price) {
        this.price = price;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

}


        其次,我们编写一个controller,在controller里面实现具体操作。
        注意:Jackson的所有JSON操作都是在ObjectMapper中实现。

package cn.lmh.controller;

import cn.lmh.pojo.Product;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/jackson")
public class JacksonController {
    @Resource
    public ObjectMapper objectMapper;
    private static Map<Integer, Product> productMap = new HashMap<>();
     /**
     * 使用静态代码快,实例化一些Product对象,封装在集合中
     */
    static {
        productMap.put(1,new Product(1,"口红",399,new Date()));
        productMap.put(2,new Product(2,"眼影",199,new Date()));
        productMap.put(3,new Product(3,"眉笔",99,new Date()));
        productMap.put(4,new Product(4,"唇釉",299,new Date()));
    }

    /**
     * Jackson序列化java对象为JSON
     * @param id
     * @return
     * @throws JsonProcessingException
     */
    @GetMapping("/products/{id}")
    public Product getProductById(@PathVariable("id") Integer id) throws JsonProcessingException {
        Product product = productMap.get(id);
        //将Java对象序列化为JSON对象
        String writeValueAsString = objectMapper.writeValueAsString(product);
        System.out.println("===序列化的字符串:"+writeValueAsString);
        return product;
    }

    /**
     * Jackson反序列化JSON为java对象
     * @return
     * @throws JsonProcessingException
     */
    @GetMapping("/getUserByJson")
    public Product getProductByJson() throws JsonProcessingException {
        //准备一个JSON字符串
        String json = "{"id":2,"name":"眼影","price":199,"birthday":"2021-07-28 20:18:24"}";
        //反序列化,将Java对象转化为JSON对象
        Product product = objectMapper.readValue(json, Product.class);
        System.out.println("===反序列化的java对象:"+product);
        return product;
    }
}

        接下来我们就可以启动项目测试了,如下是控制台打印的结果。
Jackson序列化和反序列化java对象

        好了,以上便是这个代码操作了,如果小伙伴有问题的话,可以再评论中留下你的足迹哦。