例では
class Person {
String name;
int age;
}
JSONオブジェクトにプロパティ 'age'がない場合、
{
name : John
}
Person person = objectMapper.readValue(jsonFileReader, Person.class);
デシリアライズできないことを示すJsonMappingException
をスローします。逆シリアル化中に不足しているフィールドを無視するannotationがありますか?
ありがとう
あなたが欲しいのは
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class Person {
...
}
それがジャクソン1.xのやり方です。 2.xには新しい方法があると思います。何かのようなもの
@JsonInclude(Include.NON_NULL)
public class Person {
...
}
これらはnullではない値のみをシリアル化するようにJacksonに指示し、欠損値をシリアル化解除するときに文句を言いません。 Javaデフォルトに設定するだけだと思います。
@JsonIgnoreProperties(ignoreUnknown = true)
クラスレベルで私のために働いた。
注釈ベースのアプローチは、必要に応じて無視するためのより良い方法です。デシリアライゼーションの手動方法:
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Person person = mapper.readValue(jsonFileReader, Person.class);
Jacksonライブラリの最新バージョン(2.9.6)は、デフォルトでは、欠落しているクリエータープロパティを無視します。ただし、ObjectMapper構成が次のように設定されている場合:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES, true);
次に、プロパティの1つが欠落している場合、逆シリアル化エラーが発生します。
@JsonIgnoreアノテーションを使用したいと思うと思います。 https://fasterxml.github.io/jackson-annotations/javadoc/2.2.0/com/fasterxml/jackson/annotation/JsonIgnore.html