jackson中ObjectMapper类的使用

jackson介绍

ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。

使用

1.导入依赖
<dependencies>
        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.5</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>

    </dependencies>
2.测试

2.1java对象转换成json对象

	ObjectMapper objectMapper = new ObjectMapper();  

    //序列化的时候序列对象的所有属性  
    objectMapper.setSerializationInclusion(Include.ALWAYS);  

    //反序列化的时候如果多了其他属性,不抛出异常  
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);  

    //如果是空对象的时候,不抛异常  
    objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);  

    //取消时间的转化格式,默认是时间戳,可以取消,同时需要设置要表现的时间格式  
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);  
    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))  

2.2.创建pojo类:

@Data
@ToString
@AllArgsConstructor
public class Person {
    
    
    private int id;
    private String name;
    private String password;
}

2.3.ObjectMapperTest类:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fengbin.pojo.Person;

public class ObjectMapperTest {
    
    

    public static void main(String[] args) throws JsonProcessingException {
    
    

        ObjectMapper objectMapper = new ObjectMapper();
        Person person = new Person(1, "tom", "123");
        String jsonString = objectMapper.writeValueAsString(person); //讲Java对象转成json

        System.out.println("JsonString: " + jsonString);
    }
}

测试结果如下,讲java对象转成json对象
在这里插入图片描述

3.json对象转成java对象
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fengbin.pojo.Person;

import java.io.IOException;

public class ObjectMapperTest {
    
    

    public static void main(String[] args) throws IOException {
    
    

        ObjectMapper objectMapper = new ObjectMapper();
        Person person = new Person(1, "tom", "123");
        String jsonString = objectMapper.writeValueAsString(person); //讲Java对象转成json

        System.out.println("JsonString: " + jsonString);
        System.out.println("____________________________");

		//讲json对象转成java对象
        Person person1 = objectMapper.readValue(jsonString, Person.class);
        System.out.println(person1.toString());
    }
}

如下图:
在这里插入图片描述

4.java数组对象和JSON数组对象转换
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fengbin.pojo.Person;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ObjectMapperTest1 {
    
    

    public static void main(String[] args) throws IOException {
    
    

        ObjectMapper objectMapper = new ObjectMapper();
        //Java数组转换为JSON数组
        Person person = new Person(1, "tom", "123");
        Person person1 = new Person(2, "jack", "123445");
        List<Person> personList = new ArrayList<>();
        personList.add(person);
        personList.add(person1);
        String jsonString = objectMapper.writeValueAsString(personList);
        System.out.println("JsonString List: " + jsonString);
        System.out.println("_________________________________");

        //Json数组转换为Java数组
        //JavaType
        JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Person.class);
        List<Person> list = objectMapper.readValue(jsonString,javaType);
        //打印出list中的值
        for (Person person2 : list) {
    
    
            System.out.println(person2.toString());
        }
    }
}

结果如下;
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Anna_Liqi/article/details/115214452