我在验证JSON时遇到了一些错误。我无法理解这些错误,有人能帮我解释一下吗。
{
"$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": { }
}
这是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"
}
}
}
消息:JSON与“anyOf”中的任何模式都不匹配。架构路径:
消息:无效类型。应为数组,但得到的是字符串。架构路径:
消息:值“标识”载体“未在枚举中定义。架构路径:
消息:字符串“uui # abb 0 ef 56-8562-4056-aa62-AFB 758 a 150 ad”未根据格式“uri”进行验证。架构路径:
使用架构 draft-04 或更高版本验证 JSON 时会发生此错误,问题是“id”应采用 URI 格式,而架构中定义的“类型”是数组,因此,如果要保持模型原样,解决方案可能会重命名 id 和类型。
提供的模式是一个略微修改的元模式,它验证JSON模式结构。
提供的JSON数据看起来更像DTO,而不是模式。因此,您会收到有关错误类型的错误。
JSON模式类型必须是单个值或这样的字符串数组:<code>“array”、“boolean”、“integer”、“null”、“number”、“object”、“string”。
"identification.carrier"
不在列表中,这就是为什么会出现验证错误。
最有可能的是,您应该根据特定架构(而不是元架构)验证数据,例如(为简单起见,省略了大多数属性):
{
"type": "object",
"properties": {
"type": {"type":"string"},
"id": {"type": "string"},
"happened": {"type":"string", "format":"date-time"}
},
"required": ["type", "id"]
}
我有一个用例,我将把一个json-schema作为输入,验证它,然后保存在我的系统中。稍后,我将获取json数据,我需要使用上面提到的json-schema来验证这些数据。给定这个场景,我需要执行两个级别的验证: 我使用的是json-schema-validator jar,只能找到第二级验证,在文档中找不到json-schema验证。例如:假设我们有以下示例json-schema:
我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根
问题内容: 有没有一种方法可以针对该结构的JSON模式验证JSON结构?我已经查看并发现JSON.Net验证了,但这并不能满足我的要求。 JSON.net可以: 这证明是正确的。 这也证明是真的 仅此验证为假。 理想情况下,我希望它可以验证那里也没有应该存在的字段。 问题答案: 我认为您只需要添加 到您的架构。这将停止提供未知属性。 因此,现在您的结果将是:-正确,错误,错误 测试代码… 输出:-
这是要根据模式验证的JSON。 问题是,如果我们传递了错误的数据,它将正确地验证eid和ename的类型(即整数或字符串)。对于例如: 如果我们为限定传递了错误的类型,那么它将验证为true(即,它不验证限定的类型,可能是因为它是嵌套的)。
我想通过KafkaRest代理产生一个Kafka主题。我已经在模式注册表中创建了一个JSON模式,我希望所有消息都根据注册的模式进行验证,如果它们与模式不匹配,则拒绝。 我的模式 此架构已正确注册并分配了版本1。然后我尝试为和生成一个数据类型错误的消息,但是消息被接受。 请注意,我正在生成一个与模式关联的
我对根据JSON模式验证JSON文档不感兴趣。我想验证JSON模式本身,检查它是否针对特定草案有效。是否有工具Java可以验证模式本身?