1. ホーム
  2. java

[解決済み] 以下のjson文字列をjavaオブジェクトに変換する方法は?

2022-03-04 05:44:45

質問

以下のJSON文字列をJavaオブジェクトに変換したい。

String jsonString = "{
  "libraryname": "My Library",
  "mymusic": [
    {
      "Artist Name": "Aaron",
      "Song Name": "Beautiful"
    },
    {
      "Artist Name": "Britney",
      "Song Name": "Oops I did It Again"
    },
    {
      "Artist Name": "Britney",
      "Song Name": "Stronger"
    }
  ]
}"

私の目標は、次のような簡単にアクセスすることです。

(e.g. MyJsonObject myobj = new MyJsonObject(jsonString)
myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library").

Jacksonのことは聞いたことがありますが、私が持っているjson文字列は、"mymusic"リストを含んでいるため、単なるキーと値のペアではないため、どのように使用すればよいのかわかりません。あるいは、Jacksonが最適でない場合、もっと簡単な方法がありますか?

どのように解決するのですか?

GSONを使わなくても、JacksonはプレーンなMap/Listを使うことができます。

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

またはもっと便利なJSONツリーです。

JsonNode rootNode = mapper.readTree(json);

ところで、実際にJavaのクラスを作成して、(IMO)より便利にできない理由はないでしょう。

public class Library {
  @JsonProperty("libraryname")
  public String name;

  @JsonProperty("mymusic")
  public List<Song> songs;
}
public class Song {
  @JsonProperty("Artist Name") public String artistName;
  @JsonProperty("Song Name") public String songName;
}

Library lib = mapper.readValue(jsonString, Library.class);