LoginSignup
0
0

More than 1 year has passed since last update.

【Java】Json文字列をオブジェクトに変換

Posted at

はじめに

jsonをjavaクラスに変換する方法をまとめました。
以下のエラーに悩んだので原因と解決方法も書いています。
com.fasterxml.jackson.databind.exc.InvalidDefinitionException

Json⇒javaクラス変換

mainクラス

    	String sjson = "{\"id\": 1, \"name\": \"Tanaka Taro\", \"gender\": \"Man\", \"age\": 23}";

    	ObjectMapper  mapper = new ObjectMapper();
    	BaseballPlayer player = mapper.readValue(sjson, BaseballPlayer.class);
    	System.err.println(player.getName());

BaseballPlayerクラス

public class BaseballPlayer {
	private int id;
	private String name;
	private String gender;
	private int age;

	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;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

結果

Tanaka Taro

InvalidDefinitionExceptionが発生する場合

原因はjsonのプロパティ名が大文字始まりの場合に、発生します。
解決方法としてはおとなしく小文字のプロパティ名にするか、大文字小文字を区別しない設定をいれてください。

    	String sjson = "{\"id\": 1, \"name\": \"Tanaka Taro\", \"gender\": \"Man\", \"age\": 23}";

    	ObjectMapper  mapper = new ObjectMapper();
        mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); // ←これです
    	BaseballPlayer player = mapper.readValue(sjson, BaseballPlayer.class);
    	System.err.println(player.getName());
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0