NJsonSchema icon indicating copy to clipboard operation
NJsonSchema copied to clipboard

Recursive sample generation

Open leflings opened this issue 2 years ago • 0 comments

Fixes #1560

This PR modifies SampleJsonDataGenerator to support re-use of definitions, and by extension, recursion.

See issue for the problem before.

Example 1

Now the following schema:

{
    "definitions": {
        "withNumber": {
            "type": "object",
            "required": ["value"],
            "properties": {
                "value": {
                    "type": "number"
                }
            }
        }
    },
    "type": "object",
    "required": ["number1", "number2"],
    "properties": {
        "number1": { "$ref": "#/definitions/withNumber" },
        "number2": { "$ref": "#/definitions/withNumber" }
    }
}

generates

{
  "number1": {
    "value": 0.0
  },
  "number2": {
    "value": 0.0
  }
}

Example 2

Schema:

{
    "definitions": {
        "data": {
            "type": "object",
            "required": ["body"],
            "properties": {
                "body": { "$ref": "#/definitions/data" }
            }
        }
    },
    "type": "object",
    "required": ["data"],
    "properties": {
        "data": { "$ref": "#/definitions/data" },
    }
}

generates:

{
  "data": {
    "body": {
      "body": {
        "body": null
      }
    }
  }
}

The level of recursion is controlled by a new setting on SampleJsonDataGeneratorSettings

leflings avatar Oct 02 '22 07:10 leflings