当前位置: 首页 > 教程 > Jackson >

Jackson-完整数据绑定

精华
小牛编辑
131浏览
2023-03-14

完整数据绑定是指将JSON映射到任何Java对象。

1 完整数据绑定的示例

1.1 编写核心类

MainApp:

package cn.xnip.jackson;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;

/**
 * 小牛知识库网 - https://www.xnip.cn
 */
public class MainApp {

    public static void main(String args[]){
        MainApp tester = new MainApp();
        try {
            Student student = new Student();
            student.setAge(10);
            student.setName("eric");
            tester.writeJSON(student);

            Student student1 = tester.readJSON();
            System.out.println(student1);

        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private void writeJSON(Student student) throws JsonGenerationException, JsonMappingException, IOException{
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(new File("student.json"), student);
    }

    private Student readJSON() throws JsonParseException, JsonMappingException, IOException{
        ObjectMapper mapper = new ObjectMapper();
        Student student = mapper.readValue(new File("student.json"), Student.class);
        return student;
    }
}

class Student {
    private String name;
    private int age;
    public Student(){}
    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 toString(){
        return "Student [ name: "+name+", age: "+ age+ " ]";
    }
}

1.2 运行测试

项目根目录下生成student.json文件,内容如下:

{"name":"eric","age":10}