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.

Validar los atributos únicos del esquema JSON.

¿Existe alguna forma de definir algunos atributos desde mi schema para crear una combinación y validar si un documento json ya existe utilizando JSON Schema?

Por ejemplo, considere el siguiente schema de pokemon:

“$schema”: “http://json-schema.org/2020-12/schema,
“title”: “pokemon”,
“description” : “una simple prueba de pokemon”,
“type”:”object”,
“properties” : {
“nombre”:{
“type”:”string”
},
“dueño”:{
“type”:”string”
},
“color”:{
“type”:”string”
}
}

Lo que quiero es definir color y dueño como mi clave única y luego cada vez que haya una llamada POST identificar si ya existe un pokemon con esos valores, si es así, rechazar y no guardar los datos. No estoy seguro de si puedo hacer esto extendiendo el schema y agregando una propiedad adicional a cada propiedad como un booleano y luego comparar.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible definir atributos en un esquema JSON para crear una combinación única y validar si un documento JSON ya existe. Una forma de lograrlo es usando la palabra clave uniqueItems junto con una matriz de propiedades que se deben considerar como una combinación única. Por ejemplo, el esquema modificado para el ejemplo de Pokemon dado sería así:

    {
       "$schema": "http://json-schema.org/2020-12/schema",
       "title": "pokemon",
       "description" : "una prueba simple de pokemon",
       "type": "object",
       "properties" : {
           "name":{
               "type":"string"
           },
           "owner":{
               "type":"string"
           },
           "color":{
               "type":"string"
           }
       },
       "uniqueItems": [
           ["owner","color"]
       ]
    }
    

    En el esquema anterior, uniqueItems se define como una matriz de matrices, donde cada matriz contiene los nombres de las propiedades que deben tratarse como una combinación única. En este caso, la combinación de owner y color se considerará única. Por lo tanto, si se recibe una llamada POST con los mismos valores para owner y color que un Pokemon existente, será rechazado y no se guardará.

    No es necesario agregar una propiedad adicional a cada propiedad en el esquema para lograr esto. Usar uniqueItems y definir la combinación única de propiedades es suficiente para la validación.

Comments are closed.