jsonsystems / json-schema

JSONSchema.Net Public Repository
Apache License 2.0
663 stars 64 forks source link

Each object in array creates separate objects in json shema #119

Closed npdpr closed 2 years ago

npdpr commented 2 years ago

Hello. Sorry, if it is not clear. Let me know, please. It was good before, but apparently, with some last updates something goes wrong.

Three objects in array and three objects in JSON schema now, but should be one object with all parameters in JSON schema!

P.S.: Thank you for your website https://jsonschema.net and your work. It saves a ton of time.

Response:

"regions": [
        {
            "regionId": 111,
            "pageNumber": 1,
            "continuedOnArticleNumber": 1   <----
        },
        {
            "regionId": 222,
            "pageNumber": 1,
            "continuedFromArticleNumber": 1,   <----
            "continuedOnArticleNumber": 1   <----
        },
        {
            "regionId": 333,
            "pageNumber": 1,
            "continuedFromArticleNumber": 1   <----
        }
    ]

EXPECTED JSON schema - only one instance without params repeating with all parameters included:

"regions": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "object",
            "required": [
              "regionId",
              "pageNumber",
               "continuedFromArticleNumber",   <----
               "continuedOnArticleNumber"   <----
            ],
            "properties": {
              "regionId": {
                "type": "integer"
              },
              "pageNumber": {
                "type": "integer"
              },
              "continuedFromArticleNumber": {   <----
                "type": "integer"
              },
              "continuedOnArticleNumber": {   <----
                "type": "integer"
              }
            },
            "additionalProperties": false
          }

ACTUAL ISSUE

Generated JSON schema from https://jsonschema.net :

{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "http://example.com/example.json",
    "type": "array",
    "additionalItems": true,
    "items": {
        "$id": "#/items",
        "anyOf": [
            {
                "$id": "#/items/anyOf/0",
                "type": "object",
                "required": [
                    "regionId",
                    "pageNumber",
                    "continuedOnArticleNumber"   <----
                ],
                "properties": {
                    "regionId": {
                        "$id": "#/items/anyOf/0/properties/regionId",
                        "type": "integer"
                    },
                    "pageNumber": {
                        "$id": "#/items/anyOf/0/properties/pageNumber",
                        "type": "integer"
                    },
                    "continuedOnArticleNumber": {   <----
                        "$id": "#/items/anyOf/0/properties/continuedOnArticleNumber",
                        "type": "integer"
                    }
                },
                "additionalProperties": true
            },
            {
                "$id": "#/items/anyOf/1",
                "type": "object",
                "required": [
                    "regionId",
                    "pageNumber",
                    "continuedFromArticleNumber",   <----
                    "continuedOnArticleNumber"   <----
                ],
                "properties": {
                    "regionId": {
                        "$id": "#/items/anyOf/1/properties/regionId",
                        "type": "integer"
                    },
                    "pageNumber": {
                        "$id": "#/items/anyOf/1/properties/pageNumber",
                        "type": "integer"
                    },
                    "continuedFromArticleNumber": {   <----
                        "$id": "#/items/anyOf/1/properties/continuedFromArticleNumber",
                        "type": "integer"
                    },
                    "continuedOnArticleNumber": {   <----
                        "$id": "#/items/anyOf/1/properties/continuedOnArticleNumber",
                        "type": "integer"
                    }
                },
                "additionalProperties": true
            },
            {
                "$id": "#/items/anyOf/2",
                "type": "object",
                "required": [
                    "regionId",
                    "pageNumber",
                    "continuedFromArticleNumber"   <----
                ],
                "properties": {
                    "regionId": {
                        "$id": "#/items/anyOf/2/properties/regionId",
                        "type": "integer"
                    },
                    "pageNumber": {
                        "$id": "#/items/anyOf/2/properties/pageNumber",
                        "type": "integer"
                    },
                    "continuedFromArticleNumber": {   <----
                        "$id": "#/items/anyOf/2/properties/continuedFromArticleNumber",
                        "type": "integer"
                    }
                },
                "additionalProperties": true
            }
        ]
    }
}
npdpr commented 2 years ago

LOL. Just found it in Settings on website. I guess it's new or I did not pay attention