-1
で配列をデシリアライズ:ジャクソンは、私は、次のJSONを持って空のオブジェクト
{"beans":["{}",{"name":"Will"}]}
と対応するPOJOクラス:
public class BeanA {
private BeanB[] beans;
...getters/setters
}
public class BeanB {
private String name;
...getters/setters
}
私はジャクソンがBeanBsの配列でBeanAにデシリアライズしたいと思い、最初の要素はBeanBのインスタンスになり、2番目の要素はnameプロパティが設定されたBeanBのインスタンスになります。
私はこれをシリアル化することで、元の文字列を作成しました:
BeanA beanA = new BeanA();
BeanB beanB = new BeanB();
beanB.setName("Will");
beanA.setBeans(new BeanB[] {new BeanB(), beanB});
はここにobjectMapperのための私の完全な設定です:私が得る
this.objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
this.objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
エラーはこれです:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `BeanB` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{}')
'' {} ''または' {} '? –
JSONには混合コンテンツの配列があり、最初の要素は文字列、2番目の要素はオブジェクトです。 {{"beans":[{}、{"name": "Will"}]} '、' {} 'の前後に引用符を入れていないのですか? – Andreas
ここで問題は何ですか? 'BeanA beanA = this.objectMapper.readValue(json、BeanA.class)'は動作しませんか? –