「Gradle」TypeReferenceで複数のJSON文字列をJavaオブジェクトに変換

2021年10月21日

構文
ObjectMapper mapper = new ObjectMapper();
クラス名 オブジェクト名 = mapper.readValue(json文字列, クラス名.class);

使用例
1.build.gradle(gradleプロジェクトの設定ファイル)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dependencies {
  // jackson-databindの導入
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.0'
}
dependencies {   // jackson-databindの導入 implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.0' }
dependencies {
     // jackson-databindの導入
     implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.0'
}

2.javaクラスの定義

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.course;
public class User {
public int age;
public String username;
public String addr;
    public String toString() {
return "User <age=" + age + ",username = " + username + ", addr=" + addr +">";
}
}
package com.arkgame.course; public class User { public int age; public String username; public String addr;     public String toString() { return "User <age=" + age + ",username = " + username + ", addr=" + addr +">"; } }
package com.arkgame.course;

public class User {

      public int age;
      public String username;
      public String addr;

    public String toString() {
            return "User <age=" + age + ",username = " + username + ", addr=" + addr +">";
      }
}

3.複数のJSON文字列をJavaオブジェクトに変換
型引数を持つクラス(List)をデシリアライズする場合は、 TypeReference を使用する。
書式
ObjectMapper mapper = new ObjectMapper();
List<クラス名> リスト名 = mapper.readValue(jsonLst, new TypeReference<List<クラス名>>() {});
使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.course;
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonToObj {
public static void main(String[] args) throws JsonProcessingException {
//json文字列変数の宣言
String jsonLst = "[{\"age\":11,\"username\":\"山田 次郎\",\"addr\":\"大阪\"},"
+ "{\"age\":44,\"username\":\"大崎 太郎\",\"addr\":\"福岡\"}]";
// ObjectMapper変数の宣言
ObjectMapper mapper = new ObjectMapper();
//TypeReferenceを使用して型引数を持つクラスをデシリアライズ
List<User> resLst = mapper.readValue(jsonLst, new TypeReference<List<User>>() {
});
System.out.println(resLst);
}
}
package com.arkgame.course; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonToObj { public static void main(String[] args) throws JsonProcessingException { //json文字列変数の宣言 String jsonLst = "[{\"age\":11,\"username\":\"山田 次郎\",\"addr\":\"大阪\"}," + "{\"age\":44,\"username\":\"大崎 太郎\",\"addr\":\"福岡\"}]"; // ObjectMapper変数の宣言 ObjectMapper mapper = new ObjectMapper(); //TypeReferenceを使用して型引数を持つクラスをデシリアライズ List<User> resLst = mapper.readValue(jsonLst, new TypeReference<List<User>>() { }); System.out.println(resLst); } }
package com.arkgame.course;

import java.util.List;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonToObj {

      public static void main(String[] args) throws JsonProcessingException {
            //json文字列変数の宣言
            String jsonLst = "[{\"age\":11,\"username\":\"山田 次郎\",\"addr\":\"大阪\"},"
                                     + "{\"age\":44,\"username\":\"大崎 太郎\",\"addr\":\"福岡\"}]";

            // ObjectMapper変数の宣言
            ObjectMapper mapper = new ObjectMapper();

            //TypeReferenceを使用して型引数を持つクラスをデシリアライズ
            List<User> resLst = mapper.readValue(jsonLst, new TypeReference<List<User>>() {
            });

            System.out.println(resLst);

      }

}

4.結果
[User <age=11,username = 山田 次郎, addr=大阪>, User <age=44,username = 大崎 太郎, addr=福岡>]

gradle

Posted by arkgame