josdejong/svelte-jsoneditor

Resolve JSON Schema `$ref` uri's

Open

#547 aperta il 20 mag 2025

Vedi su GitHub
 (0 commenti) (1 reazione) (0 assegnatari)TypeScript (149 fork)github user discovery
enhancementhelp wanted

Metriche repository

Star
 (1237 star)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

When a JSON Schema document contains a $ref referring to a separate JSON Schema document, the editor should load these documents into the AJV validator so the validation works.

I think this requires iterating over the JSON schema document to find all $ref occurrences, and then asynchronously loading the documents via a uri fetch, and then loading all schemas into the Ajv instance.

See https://ajv.js.org/guide/combining-schemas.html#combining-schemas-with-ref

const schema = {
  $id: "http://example.com/schemas/schema.json",
  type: "object",
  properties: {
    foo: {$ref: "defs.json#/definitions/int"},
    bar: {$ref: "defs.json#/definitions/str"},
  },
}

const defsSchema = {
  $id: "http://example.com/schemas/defs.json",
  definitions: {
    int: {type: "integer"},
    str: {type: "string"},
  },
}

const ajv = new Ajv({schemas: [schema, defsSchema]})
const validate = ajv.getSchema(schema.$id)

Guida contributor