Saltar al contenido

Esquema JSon y Herencia

Recuerda que en las ciencias un problema casi siempre tiene diferentes soluciones, de igual modo te enseñamos lo más óptimo y eficiente.

Solución:

OK, bueno, soy el autor de ambos:

  • la especificación de validación del esquema JSON actual;
  • y la biblioteca de Java, que es la más utilizada para la validación de esquemas JSON en Java hoy en día: json-schema-validator.

Así que puedo responder a su pregunta, y la respuesta básica es no.

¿Por qué? Porque no existe tal cosa como la herencia de esquema definida actualmente.

Cuando usas allOfnecesita que todos los esquemas en allOf partido; y si eres estricto con lo que puede existir en este o aquel JSON, habrás agregado additionalProperties para false. Como tal, no puede heredar.

La solución real es un mecanismo que propuse para el borrador v5: el $merge y $patch palabras clave Esto permitiría parchear esquemas con RFC 7386 o RFC 6902 (consulte aquí para obtener más información) y, de hecho, implementar la herencia de esquema.

En breve:

  • si configuras additionalProperties para falsey su JSON básico es un objeto, no podrá definir miembros de objetos adicionales;
  • con estas dos nuevas palabras clave, puede hacerlo.

El proyecto “jsonschema2pojo” contiene notaciones para este propósito.

En el esquema JSON, simplemente incluya algo como esto;

"extendsJavaClass" : "com.somecompany.SomeBaseClass",

es decir

{
  "title": "....",
  "description": "....",
  "type": "object",
  "extendsJavaClass" : "com.somecompany.SomeBaseClass",
  "properties": 
    "...": 
      "items": 
        "$ref": "#/definitions/...."
      ,
      "type": "array"
    
    .......

entonces la clase generada por el proyecto tendrá su “extiende” cláusula como;

/**
 * ...
 * 

* ... * */ @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder( ... ) public class MyNewClass extends SomeBaseClass ...

También puede buscar notaciones similares aquí.

PD: Estas notaciones no son “construcciones de esquema JSON estándar”. Se agregan con el fin de “simplemente hacerlo” hasta que sea posible una forma estándar de hacerlo.

Espero eso ayude..

Recuerda que tienes autorización de decir si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *