tutorial - Esquema JSON con nombres de propiedades desconocidas
json schema tutorial (3)
Quiero tener un esquema JSON con nombres de propiedades desconocidas en una matriz de objetos. Un buen ejemplo son los metadatos de una página web:
"meta": {
"type": "array",
"items": {
"type": "object",
"properties": {
"unknown-attribute-1": {
"type": "string"
},
"unknown-attribute-2": {
"type": "string"
},
...
}
}
}
¿Alguna idea por favor, u otra forma de llegar a la misma?
La solución de @jruizaranguren funciona para mí. Aunque soy el mismo que define el esquema, elegí otra solución
"meta": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
}
}
}
}
Convertí el objeto a una matriz de objetos nombre-valor Un ejemplo de un JSON válido:
"meta": [
[
{
"name": "http-equiv",
"value": "Content-Type"
},
{
"name": "content",
"value": "text/html; charset=UTF-8"
}
],
[
{
"name": "name",
"value": "author"
},
{
"name": "content",
"value": "Astrid Florence Cassing"
}
]
]
Puede hacer restricciones en propiedades no definidas explícitamente. El siguiente esquema obliga a que "meta" sea una matriz de objetos cuyas propiedades son de tipo cadena:
{
"properties" : {
"meta" : {
"type" : "array",
"items" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
}
}
}
}
En caso de que solo quiera tener una matriz de cadenas, puede usar el siguiente esquema:
{
"properties" : {
"meta" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}
}
Utilice patternProperties
lugar de properties
. En el ejemplo a continuación, el patrón de expresión regular .*
Acepta cualquier nombre de propiedad y estoy permitiendo tipos de string
o null
solo usando "additionalProperties": false
propiedades "additionalProperties": false
.
"patternProperties": {
"^.*$": {
"anyOf": [
{"type": "string"},
{"type": "null"}
]
}
},
"additionalProperties": false