Java对象与JSON数据的相互转换

Java对象与JSON数据的相互转换

Java对象与JSON数据的相互转换_第1张图片

文章目录

  • Java对象与JSON数据的相互转换
  • 一、Java对象转JSON
    • 基本使用
    • 注解使用
  • 二、JSON转为Java对象
    • 使用步骤


一、Java对象转JSON

一般Java对象与JSON的相互转换都使用JSON解析器来完成。 常见的JSON解析器有:Jsonlib,Gson,fastjson,jackson。 这里我们使用的是jackson解析器。

基本使用

使用步骤:
1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换

创建Java对象用于测试:

public class Person {
    private String name;
    private int age;
    private String 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;
    }

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

转换Java对象为JSON:

    @Test
    public void test1() throws JsonProcessingException {
        //1.创建Person对象
        Person p = new Person();
        p.setName("张三");
        p.setAge(18);
        p.setGender("男");

        //2.创建jackson的核心对象  ObjectMApper
        ObjectMapper mapper = new ObjectMapper();
        //3.转换
        String json = mapper.writeValueAsString(p);
        System.out.println(json);
    }

效果如下:
Java对象与JSON数据的相互转换_第2张图片

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

 		//writeValue,将数据写到桌面
        mapper.writeValue(new File("/Users/XXX/Desktop/a.txt"),p);

效果如下:
Java对象与JSON数据的相互转换_第3张图片

		//writeValue.将数据关联到Writer中
        mapper.writeValue(new FileWriter("/Users/xxx/Desktop/b.txt"),p);

效果如下:
Java对象与JSON数据的相互转换_第4张图片

注解使用

Java对象转JSON时,有些情况需要用到注解辅助格式的转换,下面是最常见的两种注解

1. @JsonIgnore:排除属性。
2. @JsonFormat:属性值得格式化
格式为: @JsonFormat(pattern = “yyyy-MM-dd”)

在上面的Java对象中添加一个属性birthday,并添加get,set方法:

import java.util.Date;

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

    public Date getBirthday() {
        return birthday;
    }

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

    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;
    }

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

再使用上述方法转换JSON时:

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

        //2.创建jackson的核心对象  ObjectMApper
        ObjectMapper mapper = new ObjectMapper();

        //3.转换
        String json = mapper.writeValueAsString(p);
        System.out.println(json);  
    }

结果如下:
Java对象与JSON数据的相互转换_第5张图片

日期格式表现为时间毫秒值,所以需要使用注解进行转换。

在属性或者get方法上面添加注解@JsonIgnore;则会忽略该属性。

	@JsonIgnore
    private Date birthday;

效果
Java对象与JSON数据的相互转换_第6张图片
在属性或者get方法上面添加注解@JsonFormat;则会转为特定的格式:

@JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

Java对象与JSON数据的相互转换_第7张图片

二、JSON转为Java对象

使用步骤

1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换
* readValue(json字符串数据,Class)

//演示 JSON字符串转为Java对象
    @Test
    public void test5() throws Exception {
       //1.初始化JSON字符串
        String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";

        //2.创建ObjectMapper对象
        ObjectMapper mapper = new ObjectMapper();
        //3.转换为Java对象 Person对象
        Person person = mapper.readValue(json, Person.class);

        System.out.println(person);
    }

效果如下:
Java对象与JSON数据的相互转换_第8张图片

你可能感兴趣的:(JSON,json,xml,java,jquery)