No soy experto en json. Mientras definía el formato de los resultados de mi API RESTful (es decir, JSON), sentí que sería más fácil documentarlo como mi propio JSON schema. Mientras escribía uno tuve algunas preguntas:Algunas preguntas relacionadas con el esquema personalizado de json
- En mi resultado JSON, ¿cómo especifico el URI para el esquema que confirma? --edit-- ¿está usando el atributo
$schema
? - ¿Existen convenciones/directrices para el control de versiones de esquema JSON? ¿Hay algunos atributos que debo/puedo definir dentro de mi esquema como atributos? Veo JSON schema itself no tiene una versión definida, excepto en su URI especificado como valor de la clave
$schema
. - ¿Puedo desglosar mi único esquema BIG JSON en varios más pequeños e incluir uno en otro? Al igual que #include en C++, consulte los esquemas múltiples en el JSON que envié al usuario como resultado.
- ¿Puedo definir un valor personalizado para la clave "tipo"? P.ej. Me gustaría volver a utilizar la definición de "fecha" de esta manera:
[ignorar esta línea, es para obtener el formato de trabajo para el siguiente JSON ..]
{
"date":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
},
"personInfo":{
"type":"object",
"properties":{
"name":{
"type":"string"
},
"dateOfBirth":{
"type":"date"
}
}
},
"student":{
"type":"object",
"properties":{
"id":{
"type":"personInfo"
},
"pass_out_year":{
"type":"date"
}
}
}
}
en lugar de proporcionar propiedades de " fecha" en varios lugares como este:
{
"personInfo":{
"type":"object",
"properties":{
"name":{
"type":"string"
},
"dateOfBirth":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
}
}
},
"student":{
"type":"object",
"properties":{
"id":{
"type":"personInfo"
},
"pass_out_year":{
"type":"object",
"properties":{
"month":{
"type":"integer",
"minimum":1,
"maximum":12
},
"year":{
"type":"integer",
"minimum":0
}
}
}
}
}
}
acuerdo con 5.1 tipo in the spec, no es posible, pero parece como un caso de uso tan básico!
parece como demasiado trabajo, por lo que no voy a hacerlo. Pero sí, una opción factible, especialmente en el entorno tecnológico actual, estoy seguro de que encontrará herramientas para hacer esto en cualquier idioma/env. Gracias. – Kashyap
En la v4 del esquema JSON esto parece no estar permitido más: http://json-schema.org/latest/json-schema-validation.html#anchor79 – Mitar