Jackson を使用してオブジェクトの配列をデシリアライズする方法 質問する

Jackson を使用してオブジェクトの配列をデシリアライズする方法 質問する

Jackson データバインディングドキュメントJackson が「サポートされているすべての型の配列」の逆シリアル化をサポートしていることを示していますが、これの正確な構文はわかりません。

単一のオブジェクトの場合は次のようにします。

//json input
{
    "id" : "junk",
    "stuff" : "things"
}

//Java
MyClass instance = objectMapper.readValue(json, MyClass.class);

ここで配列に対して次の操作を行います:

//json input
[{
    "id" : "junk",
    "stuff" : "things"
},
{
    "id" : "spam",
    "stuff" : "eggs"
}]

//Java
List<MyClass> entries = ?

魔法の欠落コマンドがあるかどうか知っている人はいますか? そうでない場合、解決策は何ですか?

ベストアンサー1

まずマッパーを作成します:

import com.fasterxml.jackson.databind.ObjectMapper;// in play 2.3
ObjectMapper mapper = new ObjectMapper();

配列として:

MyClass[] myObjects = mapper.readValue(json, MyClass[].class);

リストとして:

List<MyClass> myObjects = mapper.readValue(jsonInput, new TypeReference<List<MyClass>>(){});

リスト型を指定する別の方法:

List<MyClass> myObjects = mapper.readValue(jsonInput, mapper.getTypeFactory().constructCollectionType(List.class, MyClass.class));

おすすめ記事