Campos incorrectos de Json
¿Cómo puedo obtener todos los nombres de campos incorrectos? Por ejemplo, tengo la siguiente cadena de entrada en formato JSON:
{
“name”: “name#1”,
“address”: “address#1”,
“pone”: “000000000”,
“ail”: “mail@smth.ru”
}
Donde los campos ‘pone’ y ‘ail’ son incorrectos. Se necesita usar ‘phone’ y ’email’. También uso esta propiedad:
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
Para capturar la excepción. Y la atrapo dentro de un try/catch cuando deserializo JSON a un objeto, pero solo hay información sobre un campo en el mensaje de excepción.
Necesito obtener todos los campos incorrectos de una vez.
Quizás alguien tenga una idea al respecto. También intenté usar jsonSchema, pero creo que no es una buena idea porque al final tengo este mensaje “$: se encontró una cadena, se esperaba un objeto” con este código:
JsonSchemaFactory factory = JsonSchemaFactory.getInstance (VersionFlag.V201909);
InputStream stream=TestClass.class.getResourceAsStream(“/file.json”);
JsonSchema schema=factory.getSchema(stream);
JsonNode node =mapper.convertToJsonNode(MyObject.builder().build());
Set
davy.ai
Para obtener todos los nombres de campo incorrectos de una vez, puede utilizar una implementación personalizada de
JsonParser
, que le permitirá capturar todos los errores durante la fase de análisis. Aquí se presenta una implementación de ejemplo:Para utilizar esta implementación, puede pasar su cadena JSON de entrada al
WrongFieldNamesParser
y comprobar la listawrongFields
para obtener todos los nombres de campo incorrectos. Aquí hay un ejemplo de código:Este código producirá la salida:
[pone, ail]
.