java对象转json

java对象转json

JSON解析器:

  常见的解析器:Jsonlib,Gson,fastjson,jackson

使用步骤:

  1.导入jackson相关jar包

  2.创建jackson核心对象 ObjectMapper

  3.调用ObjectMapper的相关方法转换

转换方法:

  writeValue(参数1,obj):
    参数1:
      File:将obj对象转换为JSON字符串,并保存到指定的文件中
      Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
      OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
  writeValueAsString(obj):将对象转为json字符串

Person实体类:

package com.example.domain;

public class Person {
    private String name;
    private int age;
    private String gender;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

测试类:java转换位json字符串

package com.example.test;

import com.example.domain.Person;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.io.File;
import java.io.FileWriter;

public class JacksonTest {

    //Java对象转为JSON字符串
    @Test
    public void test1() throws Exception {
        //1.创建Person对象
        Person person = new Person();
        person.setName("张三");
        person.setAge(23);
        person.setGender("男");

        //2.创建Jackson的核心对象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //3.转换
        /*
            转换方法
                writeValue(参数1,obj):
                    参数1:
                        File:将obj对象转换为JSON字符串,并保存到指定的文件中
                        Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
                        OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
                writeValueAsString(obj):将对象转为json字符串

         */
        String json = mapper.writeValueAsString(person);

        //System.out.println(json);// {"name":"张三","age":23,"gender":"男"}

        //writeValue:将数据写到d:a.txt文件中
        //mapper.writeValue(new File("d:a.txt"), person);

        //writeValue:将数据关联到Writer中
        mapper.writeValue(new FileWriter("d://b.txt"), person);
    }

}

 

java对象转json-注解

注解:

  1.@JsonIgnore:排除属性。

public class Person {
    private String name;
    private int age;
    private String gender;

    //@JsonIgnore // 忽略该属性
    private Date birthday;

测试:

    @Test
    public void test2() throws Exception {
        //1.创建Person对象
        Person person = new Person();
        person.setName("张三");
        person.setAge(20);
        person.setGender("男");
        person.setBirthday(new Date());

        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(person);

        System.out.println(string);// {"name":"张三","age":23,"gender":"男","birthday":1675910553917}
    }

 

 

  2.@JsonFormat:属性值格式化

public class Person {
    private String name;
    private int age;
    private String gender;

    @JsonFormat(pattern = "yyyy-MM-dd") // 格式化该属性
    private Date birthday;

测试:

    @Test
    public void test2() throws Exception {
        //1.创建Person对象
        Person person = new Person();
        person.setName("张三");
        person.setAge(20);
        person.setGender("男");
        person.setBirthday(new Date());

        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(person);

        System.out.println(string);// {"name":"张三","age":23,"gender":"男","birthday":1675910553917}
    }

 

 

 

java对象转json-List&Map

List集合:数组(对应的是字符串就是字符串对象)

    @Test
    public void test3() throws Exception {
        //1.创建Person对象
        Person person = new Person();
        person.setName("张三");
        person.setAge(23);
        person.setGender("男");
        person.setBirthday(new Date());

        Person person1 = new Person();
        person1.setName("张三");
        person1.setAge(23);
        person1.setGender("男");
        person1.setBirthday(new Date());

        Person person2 = new Person();
        person2.setName("张三");
        person2.setAge(23);
        person2.setGender("男");
        person2.setBirthday(new Date());

        //创建list集合
        List<Person> people = new ArrayList<>();
        people.add(person);
        people.add(person1);
        people.add(person2);



        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(people);
        //[{"name":"张三","age":23,"gender":"男","birthday":"2023-02-09"},{"name":"张三","age":23,"gender":"男","birthday":"2023-02-09"},{"name":"张三","age":23,"gender":"男","birthday":"2023-02-09"}]
        System.out.println(string);
    }

 

Map集合:对象格式一致

 @Test
    public void test4() throws Exception {
        //1.创建map对象
        HashMap<String, Object> map = new HashMap<>();
        map.put("name", "张三");
        map.put("age", "20");
        map.put("gender", "男");


        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String string = mapper.writeValueAsString(map);
        //{"gender":"男","name":"张三","age":"20"}
        System.out.println(string);
    }

 

posted @ 2023-02-09 10:59  monkey大佬  阅读(1397)  评论(0)    收藏  举报