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.

from environment variables specified at runtime. JSON Schema toma valores de otro archivo (no JSON), toma nombres de archivo de las variables de entorno especificadas en tiempo de ejecución.

¿Es posible restringir los valores o nombres de propiedad en el esquema de acuerdo con los datos definidos en otro archivo json (no esquema, solo de datos)? ¿O incluso tomar archivos de una carpeta y procesar sus nombres?

Por ejemplo, YAML:
Archivo 1:

Atributos:
– Atributo1
– Atributo2

Archivo 2:

Influencia:
Atributo1: 1
Atributo2: -3

Quiero tener ayuda de sintaxis en el segundo archivo que depende de los datos definidos en el primer archivo. ¿Cómo puedo hacerlo?

Y un caso más difícil:

Hay una carpeta con algunos YAML / JSON que describen algunos eventos.
como:
Eventos / evento1.yaml
Eventos / subcarpeta / evento2.yaml

Otro archivo debería usar solo nombres de archivo definidos en la carpeta
Por ejemplo:

Eventos predeterminados:
– evento1
– evento2

¿Es posible y cómo obtener autocompletado con JSON Schema en este caso?

No se trata de validación, necesito ayuda de sintaxis, autocompletado durante la creación de dichos archivos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible restringir los valores o los nombres de las propiedades en un esquema basado en los datos definidos en otro archivo JSON. Esto se puede lograr utilizando la palabra clave $ref en JSON Schema.

    Por ejemplo, si tenemos el siguiente esquema:

    {
      "type": "object",
      "properties": {
        "atributo1": {"type": "string"},
        "atributo2": {"type": "number"}
      }
    }
    

    Y el siguiente archivo JSON no esquema:

    {
      "valoresRestringidos": ["atributo1"]
    }
    

    Podemos usar la palabra clave $ref para restringir los nombres de las propiedades en el esquema:

    {
      "type": "object",
      "properties": {
        "$ref": "file://path/to/data.json#/valoresRestringidos"
      }
    }
    

    De manera similar, podemos usar la palabra clave $ref para restringir los valores en un esquema basado en datos en otro archivo JSON.

    Para el segundo caso, donde tenemos una carpeta que contiene archivos YAML/JSON que describen algunos eventos, podemos usar un esquema JSON para definir la estructura de los archivos de datos y restringir los valores de la propiedad DefaultEvents basados en los nombres de archivo en la carpeta.

    {
      "type": "object",
      "properties": {
        "DefaultEvents": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "evento1",
              "evento2"
            ]
          }
        }
      }
    }
    

    Luego podemos usar una herramienta como VS Code con una extensión de esquema JSON para proporcionar autocompletado y ayuda de sintaxis para crear estos archivos.

Comments are closed.