2016-08-30 7 views
4

ジャクソンJsonNodeをJavaコレクションに変換する適切な方法は何ですか?それはJSON文字列だったらJackson JsonNodeから型付きコレクション

私はObjectMapper.readValue(String, TypeReference)を使用することができますがJsonNodeのためだけのオプションは、その変換のための任意のPOJOを受け入れるのために間違った感じ型付きコレクション、またはObjectMapper.convertValue(Object, JavaType)を与えないだろうObjectMapper.treeToValue(TreeNode, Class)です。

別の「正しい」方法がありますか、それともこれらの1つですか?

答えて

10

ObjectReaderObjectMapper#readerFor(TypeReference)とすると、入力した型指定されたコレクションを説明するTypeReferenceを使用します。次に、ObjectReader#readValue(JsonNode)を使用してJsonNode(おそらくArrayNode)を解析します。例えば

、古いジャクソンバージョン(2.5および前)でのみJSONストリング

ObjectMapper mapper = new ObjectMapper(); 
// example JsonNode 
JsonNode arrayNode = mapper.createArrayNode().add("one").add("two"); 
// acquire reader for the right type 
ObjectReader reader = mapper.readerFor(new TypeReference<List<String>>() { 
}); 
// use it 
List<String> list = reader.readValue(arrayNode); 
+0

を含むJSON配列のうちList<String>を得るために、何readerFor()メソッドは存在しません。代わりにreader()メソッドを使用してください。 –

関連する問題