J'essaye d'analyser Json dans un objet Java.
Certains champs nécessitent un comportement personnalisé, j'ai donc essayé d'utiliser @JsonCreator
sur un constructeur. Eh bien, cela fonctionne, mais pour l'autre champ annoter avec @JsonProperty
ne sont pas remplis.
N'a pas encore vérifié, mais je suppose que mon objet annoter avec @JsonUnwrapped
ne sont pas remplis non plus.Jackson Deserialiser: utiliser @JsonCreator AND @JsonProperty dans le champ?
Dans ma recherche, j'ai vu un commentaire qui indique que c'est possible, mais je n'arrive pas à comprendre comment, si c'est effectivement possible.
Il y a environ 400 champs dans le json, et seulement 5 ou 6 qui nécessitent un comportement personnalisé. Donc, si je peux éviter de réécrire tout constructeur ... ce serait bien!
de ce que je Exemple essayé:
public class MyObjectA {
@JsonProperty("keyField1")
private String myField1;
@JsonUnwrapped
private MyObjectB;
private String[] myField2;
@JsonCreator
public MyObjectA(final Map<String, Object> properties){
myField2 = ... //some Business logic
}
}
Junit:
ObjectMapper mapper = new ObjectMapper();
MyObjectA result = mapper.readValue(getJsonInputStream(JSON_FILE_PATH),MyObjectA.class);
Assert.notNull(result.getMyField1(),"should be populated")
Assert.notNull(result.getMyField2(),"should be populated")
Assert.notNull(result.getMyObjectB(),"should be populated")
Note: sans le constructeur, le champ autre sont bien peuplée
s'il vous plaît partager votre code avec problème ... avec l'échantillon json et votre pojo – Optional
post édité pour fournir un échantillon. –