私はfasterxml.jacksonを使用しています。私はreadValue()
について混乱しています。ここに私の質問です。JSONによる配列のデシリアライズ方法
私はjacksonが通常のJavaBeanとCollectionを2つの異なる方法でデシリアライズすることを知っています。 JavaBeanの場合、MyBean.class
またはnew TypeReference<MyBean>
〜readValue()
に渡すことができます。コレクションの場合は、new TypeReference<List<MyBean>>
を渡す必要があります。これは、TypeReference
がCollectionによって消去されたタイプを保存するためです。私は正しい? :)
今私は混乱しています。 MyBean
にリストが含まれている場合、私はまだMyBean.class
を渡すことができ、それは動作します。ジャクソンはどうしたの?
public class MyBean {
String str;
List<String> strList;
}
strListフィールドの汎用タイプは、リフレクションを使用して使用できます。しかし、Javaでは 'List .class'を引数として渡すことはできません。 'List.class'だけです。 –
多分このリンクはあなたを助けますhttps://stackoverflow.com/a/6349488/6296931 –
私の質問は:私はJSONがタイプ消去のためにリストを逆直列化できないと思います。そのため、TypeReferenceを渡す必要があります。しかし、Java Beanにリストが含まれている場合、JSONはどのようにランタイムでそのジェネリックを知ることができますか? –
zchen