Json schema validation error

14,961

The schema provided is a slightly modified meta-schema, it validates JSON schema structure.

The JSON data provided looks more like a DTO, not a schema. Therefore you receive an error about wrong type.

JSON schema type MUST be single value or array of such strings: "array","boolean","integer","null","number","object","string".

"identification.carrier" is not in the list that's why you get validation error.

Most likely you should validate your data against a particular schema (not meta-schema), something like (majority of properties are omitted for simplicity):

{
  "type": "object",
  "properties": {
    "type": {"type":"string"},
    "id": {"type": "string"},
    "happened": {"type":"string", "format":"date-time"}
  },
  "required": ["type", "id"]
}
Share:
14,961
Sam
Author by

Sam

Updated on June 23, 2022

Comments

  • Sam
    Sam almost 2 years

    Im getting a few errors in while validaing JSON. Im unable to understand the errors can anyone help and explain a bit.

    {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "Modified JSON Schema draft v4 that includes the optional '$ref' and 'format'",
    "definitions": {
        "schemaArray": {
            "type": "array",
            "minItems": 1,
            "items": { "$ref": "#" }
        },
        "positiveInteger": {
            "type": "integer",
            "minimum": 0
        },
        "positiveIntegerDefault0": {
            "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ]
        },
        "simpleTypes": {
            "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ]
        },
        "stringArray": {
            "type": "array",
            "items": { "type": "string" },
            "minItems": 1,
            "uniqueItems": true
        }
    },
    "type": "object",
    "properties": {
        "id": {
            "type": "string",
            "format": "uri"
        },
        "$schema": {
            "type": "string",
            "format": "uri"
        },
        "$ref": {
            "type": "string"
        },
        "format": {
            "type": "string"
        },
        "title": {
            "type": "string"
        },
        "description": {
            "type": "string"
        },
        "default": { },
        "multipleOf": {
            "type": "number",
            "minimum": 0,
            "exclusiveMinimum": true
        },
        "maximum": {
            "type": "number"
        },
        "exclusiveMaximum": {
            "type": "boolean",
            "default": false
        },
        "minimum": {
            "type": "number"
        },
        "exclusiveMinimum": {
            "type": "boolean",
            "default": false
        },
        "maxLength": { "$ref": "#/definitions/positiveInteger" },
        "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
        "pattern": {
            "type": "string",
            "format": "regex"
        },
        "additionalItems": {
            "anyOf": [
                { "type": "boolean" },
                { "$ref": "#" }
            ],
            "default": { }
        },
        "items": {
            "anyOf": [
                { "$ref": "#" },
                { "$ref": "#/definitions/schemaArray" }
            ],
            "default": { }
        },
        "maxItems": { "$ref": "#/definitions/positiveInteger" },
        "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
        "uniqueItems": {
            "type": "boolean",
            "default": false
        },
        "maxProperties": { "$ref": "#/definitions/positiveInteger" },
        "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
        "required": { "$ref": "#/definitions/stringArray" },
        "additionalProperties": {
            "anyOf": [
                { "type": "boolean" },
                { "$ref": "#" }
            ],
            "default": { }
        },
        "definitions": {
            "type": "object",
            "additionalProperties": { "$ref": "#" },
            "default": { }
        },
        "properties": {
            "type": "object",
            "additionalProperties": { "$ref": "#" },
            "default": { }
        },
        "patternProperties": {
            "type": "object",
            "additionalProperties": { "$ref": "#" },
            "default": { }
        },
        "dependencies": {
            "type": "object",
            "additionalProperties": {
                "anyOf": [
                    { "$ref": "#" },
                    { "$ref": "#/definitions/stringArray" }
                ]
            }
        },
        "enum": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true
        },
        "type": {
            "anyOf": [
                { "$ref": "#/definitions/simpleTypes" },
                {
                    "type": "array",
                    "items": { "$ref": "#/definitions/simpleTypes" },
                    "minItems": 1,
                    "uniqueItems": true
                }
            ]
        },
        "allOf": { "$ref": "#/definitions/schemaArray" },
        "anyOf": { "$ref": "#/definitions/schemaArray" },
        "oneOf": { "$ref": "#/definitions/schemaArray" },
        "not": { "$ref": "#" }
    },
    "dependencies": {
        "exclusiveMaximum": [ "maximum" ],
        "exclusiveMinimum": [ "minimum" ]
    },
    "default": { }
    

    }

    And here is the json.

    {
      "type": "identification.carrier",
      "id": "uui#abb0ef56-8562-4056-aa62-afb758a150ad",
      "happened": "2018-03-28T10:52:44.35+02:00",
      "processed": "2018-03-28T10:52:44.35+02:00",
      "tracking_id": "tid#ad2ebdb1-5d5b-4dcb-a058-494b6af89127",
      "source_attributes": {
        "id": "idsadm@app44A0",
        "data": {
          "info": "resumeIdentify: result: carrier has operator and mobile network",
          "callId": "ad2ebdb1-5d5b-4dcb-a058-494b6af89127",
          "contextId": "0aeb6745-a43c-4257-a535-6905d21a5297",
          "ids_state": "SUCCESS",
          "ids_strategy_type": "REDIRECT_MULTI_WITH_MSISDN_IN_HEADER",
          "ids_identity_type": "MSISDN",
          "country": "DE",
          "ids_result_type": "IDENTITY",
          "ids_result_network": "MobileNetwork[MOBILE=Vodafone D2 GmbH,operator=Operator[ref=10013,MNO=VODAFONE,countryIsoName=DE],countryIsoName=DE,ref=64,mnc=2,mcc=262,mvnos=[Operator[ref=30,MVNO=MOBILCOM-DEBITEL,countryIsoName=DE]]",
          "idsServiceLine": "599 387 240"
        }
      },
      "event_data": {
        "service": {
          "name": "IdsService",
          "version": "4.1"
        },
        "result": {
          "country": "DE",
          "mno": "VODAFONE",
          "mvno": "MOBILCOM-DEBITEL",
          "mcc": "262",
          "mnc": "2"
        }
      }
    }
    

    Message: JSON does not match any schemas from 'anyOf'. Schema path:

    /properties/type/anyOf

    Message: Invalid type. Expected Array but got String. Schema path:

    /properties/type/anyOf/1/type

    Message: Value "identification.carrier" is not defined in enum. Schema path:

    /definitions/simpleTypes/enum

    Message: String 'uui#abb0ef56-8562-4056-aa62-afb758a150ad' does not validate against format 'uri'. Schema path:

    /properties/id/format