RicoSuter/NJsonSchema

Unable to parse schema with references to other schemas

Open

#328 opened on Feb 28, 2017

View on GitHub
 (4 comments) (0 reactions) (0 assignees)C# (550 forks)github user discovery
help wantedtype: bug

Repository metrics

Stars
 (1,578 stars)
PR merge metrics
 (Avg merge 39d 6h) (1 merged PR in 30d)

Description

I'm trying to generate POCO's from the following JSON 4 schema, which has references to a number of other files.

http://docs.oasis-open.org/ubl/UBL-2.1-JSON/v1.0/cnprd01/json-schema/maindoc/UBL-Invoice-2.1.json

Here is my very basic code.

class Program
    {
        static void Main(string[] args)
        {
            using (var schema = JsonSchema4.FromUrlAsync("http://docs.oasis-open.org/ubl/UBL-2.1-JSON/v1.0/cnprd01/json-schema/maindoc/UBL-Invoice-2.1.json"))
            {
                Console.WriteLine("Reading schema");
                var generator = new CSharpGenerator(schema.Result);

                Console.WriteLine("Writing classes");
                var file = generator.GenerateFile(@"C:\TEMP\Classes\Invoice.cs");
            }
        }
    }

I'm getting the following error

{"Could not resolve the JSON path '../common/UBL-CommonExtensionComponents-2.1.json#/definitions/UBLExtensions' with the full JSON path 'http://docs.oasis-open.org/ubl/UBL-2.1-JSON/v1.0/cnprd01/json-schema/common/UBL-CommonExtensionComponents-2.1.json#/definitions/UBLExtensions'."}

The generator seems to have issue with the following $ref code, of which there are many ocurrences

"properties": {

        "UBLExtensions": {
          "title": "UBLExtensions",
          "description": "An optional set of extensions to the committee model",
          "items": { 
            "$ref": "../common/UBL-CommonExtensionComponents-2.1.json#/definitions/UBLExtensions" },
          "maxItems": 1,
          "minItems": 1,
          "additionalProperties": false,
          "type": "array"
          },

Any ideas how I resolve it?

Contributor guide