Jackson avec JSON : résolution de l'erreur « Champ non reconnu »
Lors de la conversion d'une chaîne JSON en un objet Java à l'aide de Jackson, vous pouvez rencontrer le erreur "Champ non reconnu, non marqué comme ignorable" s'il y a des champs non reconnus dans le JSON. Pour résoudre ce problème, Jackson propose deux options :
Annotation JsonIgnoreProperties
L'annotation @JsonIgnoreProperties vous permet d'ignorer des champs spécifiques dans le POJO lors de la désérialisation. Par exemple, dans votre cas, vous pouvez ignorer le champ « wrapper » :
@JsonIgnoreProperties(ignoreUnknown = true) class Wrapper { ... }
Cela ignorera toutes les propriétés non reconnues, y compris « wrapper ».
Désérialiseur personnalisé
Si vous avez besoin d'un contrôle plus granulaire sur les propriétés ignorées, vous pouvez créer un désérialiseur personnalisé. Remplacez la méthode de désérialisation pour gérer les champs non reconnus :
public class CustomDeserializer extends JsonDeserializer<Wrapper> { @Override public Wrapper deserialize(JsonParser parser, DeserializationContext context) throws IOException { Wrapper wrapper = new Wrapper(); ObjectCodec codec = parser.getCodec(); JsonToken token = parser.getCurrentToken(); while (token != JsonToken.END_ARRAY) { if (token == JsonToken.START_OBJECT) { Student student = codec.readValue(parser, Student.class); wrapper.getStudents().add(student); } token = parser.nextToken(); } return wrapper; } }
Ensuite, enregistrez le désérialiseur personnalisé auprès de Jackson :
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new SimpleModule().addDeserializer(Wrapper.class, new CustomDeserializer()));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!