LoginSignup
1
0

入れ子になったJSONからJavaオブジェクトにデシリアライズしたい

Posted at

やりたいこと

ObjectMapperでJSONが入れ子構造になっているJSONを
Javaオブジェクトにデシリアライズしたい。

対象JSONは、
・dates, page, results, total_pages, total_resultsが項目として存在。
・dates内に2つ項目が含まれている。
・results内が配列で、かつ複数項目が含まれている。

エラーの原因と解決策

JavaのBeansクラスが正しく構成されていなかった。
JSONの入れ子構造に合わせて、Beansを構成しなければいけない。

MainController.java
        ObjectMapper mapper = new ObjectMapper();
        try {
            Json list = mapper.readValue(json, Json.class);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

Json.classが最上階層のBeanクラス。
Dates, Resultsがさらに入れ子で入っているため、
型はそれぞれDates, Resultsになっている。
さらに、ResultsはJSONで配列になっているため、Listになる。

Json.class

public class Json {

    private Dates dates;
    private String page;
    private List<Results> results;
    private String total_pages;
    private String total_results;
    //以下ゲッターとセッターを実装。
Dates.class
package com.example.movie.dto;

public class Dates.java {
    private String maximum;
    private String minimum;
    //以下ゲッターとセッターを実装。
Results.java
public class Results {
    private boolean adult;
    private int[] genre_ids;
    private int id;
    private String language;
    private String title;
    private String overview;
    //以下ゲッターとセッターを実装。
1
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
1
0