es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo lanzar un error cuando se encuentra un campo desconocido al leer JSON con Scala Play?

Con los esquemas JSON, si desea que el esquema no supere la validación si encuentra campos adicionales, puede agregar “additionalProperties”: false en el esquema y listo, algo así:

{
     "$ schema": "http://json-schema.org/draft-07/schema",
     "type": "object",
     "title": "",
     "description": "",
     "properties": {
         "fieldOne": {
             "type": "string",
             "description": "Cadena de ejemplo"
         }
     },
     "additionalProperties": false
}

Sin embargo, si tiene la siguiente clase/objecto:

case class MyThing(fieldOne: Option[String])

object MyThing {
  implicit val reads: Reads [MyThing] = Json.reads [MyThing]
}

y le proporciona algo distinto a fieldOne, aún leerá correctamente el JSON como una clase de caso, pero la clase de caso estará vacía.

¿Hay alguna manera de generar un error cuando JSON tiene campos adicionales al leer desde JSON a una clase de caso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la opción "additionalProperties": false en tu esquema JSON para asegurarte de que no se acepten campos adicionales. Esto hará que el esquema falle la validación si encuentra algún campo adicional. Por ejemplo:

    {
        "$schema": "http://json-schema.org/draft-07/schema",
        "type": "object",
        "title": "",
        "description": "",
        "properties": {
            "fieldOne": {
                "type": "string",
                "description": "Ejemplo de cadena"
            }
        },
        "additionalProperties": false
    }
    

Comments are closed.