tech.chakapoko.com
Home / Java / Jackson

[Java]JacksonでJSONをJavaオブジェクトに変換する

基本的な使い方

次のコードはJacksonを使ってJSONをJavaオブジェクトに変換する例です。

package com.example;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

class Student {

    private int id;

    private String name;

    public Student() {
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

}


public class JacksonExample {

    public static void main(String[] args) throws IOException {
        String input = "{\"id\":1,\"name\":\"Tom\"}";
        ObjectMapper mapper = new ObjectMapper();
        Student student = mapper.readValue(input.getBytes(), Student.class);
        System.out.println(student);
    }

}

結果は次のようになります。

Student{id=1, name='Tom'}

指定したコンストラクタを使う

@JsonProperty アノテーションを使うと使用するコンストラクタを指定できます。

package com.example;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

class Student {

    private int id;

    private String name;

    public Student(@JsonProperty("id") int id, @JsonProperty("name") String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}


public class JacksonExample {

    public static void main(String[] args) throws IOException {
        String input = "{\"id\":1,\"name\":\"Tom\"}";
        ObjectMapper mapper = new ObjectMapper();
        Student student = mapper.readValue(input.getBytes(), Student.class);
        System.out.println(student);
    }

}