Java Jacksonを使用したJSONの変換のサンプル

JavaのJacksonを使用したJSONの変換のサンプルです。

目次

jackson

  • JSONを処理するライブラリです
  • JSON文字列からJavaオブジェクトに変換します
  • JavaオブジェクトからJSON文字列に変換します
  • 以下はMavenでJacksonのライブラリを取得する場合の設定です

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.8.1</version>
    </dependency>
    

    MavenRepositoryのサイト
    http://mvnrepository.com/artifact/com.fasterxml.jackson.core

  • jackson-databind-2.8.8.1.jarの他にjackson-annotations-2.8.0.jarとjackson-core-2.8.8.jarもダウンロードされます

JSON文字列からJavaオブジェクトに変換

JSON文字列からJavaオブジェクトに変換するサンプルです。
社員クラスの項目にある@JsonPropertyは、jsonの名前と紐付けします。
社員クラスの項目の「資格」はリストです。

package test1;

import java.io.IOException;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * jacksonのサンプル
 */
class Syain {

	private int id;
	
	//@JsonPropertyは、JSONのnameと紐付けする
	@JsonProperty("name")
	private String n;
	
	private List<String> sikaku; // 資格
	
	public int getId() {
		return id;
	}
	public String getN() {
		return n;
	}
	public List<String> getSikaku() {
		return sikaku;
	}
}
class Sample {
	void runSample(){
		
	//JSONデータ
	String testJson1 = 
	"{\"id\":1, \"name\":\"taro\",\"sikaku\":[\"基本\",\"応用\"]}";
	
	String testJson2 = "{\"id\":2, \"name\":\"jiro\"}";
	
	//Javaオブジェクトの生成
	Syain syain1 = new Syain();
	Syain syain2 = new Syain();
	
	ObjectMapper mapper = new ObjectMapper();

	try {
		//JSONデータからJavaオブジェクトに変換
		syain1 = mapper.readValue(testJson1, Syain.class);
		syain2 = mapper.readValue(testJson2, Syain.class);

		//Javaオブジェクトのデータの確認
		System.out.println(syain1.getId()); // 1
		System.out.println(syain1.getN()); // taro
		System.out.println(syain1.getSikaku()); // [基本, 応用]
		
		System.out.println(syain2.getId()); // 2
		System.out.println(syain2.getN()); // jiro
		System.out.println(syain2.getSikaku()); // null
	
	} catch (JsonParseException e) {
		e.printStackTrace();
	} catch (JsonMappingException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
	}
}
public class Test1 {
	public static void main(String[] args) {
		Sample s = new Sample();
		s.runSample();
	 }
}

JavaオブジェクトからJSON文字列に変換

JavaオブジェクトからJSON文字列に変換するサンプルです。
社員クラスの項目にある@JsonPropertyの値がjsonの名前になります。
社員クラスの項目の「資格」はリストです。

package test1;

import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * jacksonのサンプル
 */
class Syain {

	@JsonProperty("id")
	private int id;
	
	//@JsonPropertyの値がJSONの項目になる
	//(nではなくname)
	@JsonProperty("name")
	private String n;
	
	@JsonProperty("sikaku")
	private List<String> sikaku; // 資格

	public void setId(int id) {
		this.id = id;
	}
	public void setN(String n) {
		this.n = n;
	}
	public void setSikaku(List<String> sikaku) {
		this.sikaku = sikaku;
	}
}
class Sample {
	void runSample(){

	//Javaオブジェクトの生成
	Syain syain1 = new Syain();
	Syain syain2 = new Syain();
	
	//Javaオブジェクトに値をセット
	List<String> sikaku = new ArrayList<>();
	sikaku.add("基本");
	sikaku.add("応用");
	
	syain1.setId(1);
	syain1.setN("taro");
	syain1.setSikaku(sikaku);
	
	syain2.setId(2);
	syain2.setN("jiro");
	
	ObjectMapper mapper = new ObjectMapper();
    String testJson1;
    String testJson2;
    
	try {
		//JavaオブジェクトからJSONデータに変換
		testJson1 = mapper.writeValueAsString(syain1);
		testJson2 = mapper.writeValueAsString(syain2);
		
		//JSONデータの確認
		System.out.println(testJson1); 
		//{"id":1,"name":"taro","sikaku":["基本","応用"]}
		
		System.out.println(testJson2); 
		//{"id":2,"name":"jiro","sikaku":null}
		
	} catch (JsonProcessingException e) {
		e.printStackTrace();
	}
	}
}
public class Test1 {
	public static void main(String[] args) {
		Sample s = new Sample();
		s.runSample();
	}
}
 はまったらエンジニア特化型Q&Aサイト
【teratail(テラテイル)】で質問しましょう!


△上に戻る