我有一个JSON和一个JSON模式
JSON:
{
"aaa": "4000-02-01 00:00:00"
}
Run Code Online (Sandbox Code Playgroud)
JSON-模式:
{
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"properties": {
"aaa": {
"type": "string",
"format": "date-time"
}
}, "required": ["aaa"]
}
Run Code Online (Sandbox Code Playgroud)
JSON由JSON模式验证.但是,如果我将字段更改aaa为"bla",则架构不会再注意到它不再是日期时间.
我错过了架构中的任何内容吗?
我知道$ ref需要一个URI来使用json架构,但$ ref:"#"指向哪里?它只是意味着使用此块级别的当前架构吗?或者是否意味着使用根级别ID中定义的根级别架构?谢谢
编辑:所以,如果我有:
"items": {
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
Run Code Online (Sandbox Code Playgroud)
因为它缺少id字段,所以它将首先尝试使用根模式验证实例项,然后如果失败则尝试使用定义模式中定义的schemaArray模式对其进行验证,对吗?
所以,如果我将其更改为:
"items": {
"id" : "#/items",
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
Run Code Online (Sandbox Code Playgroud)
然后anyOf数组中的第一个子模式将指向items模式本身?
编辑#2:好的,如果我有:
"items": {
"id" : "itemSchema",
"anyOf": [
{ "$ref": "#" },
{ "$ref": "#/definitions/schemaArray" }
],
"default": {}
}
Run Code Online (Sandbox Code Playgroud)
和
"stringArray": {
"type": "array",
"items": { "$ref" : "itemSchema" },
"minItems": 1,
"uniqueItems": true
}
Run Code Online (Sandbox Code Playgroud)
"stringArray"的"items"字段是否会针对上述"itemsSchema"进行验证?
'anyOf'中的第二个$ …
我想在对象数组中使用具有未知属性名称的JSON模式.一个很好的例子是网页的元数据:
"meta": {
"type": "array",
"items": {
"type": "object",
"properties": {
"unknown-attribute-1": {
"type": "string"
},
"unknown-attribute-2": {
"type": "string"
},
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
请问任何想法,或以其他方式达到相同的目的?
我有以下JSON输出数据:
{
"label_name_0" : 0,
"label_name_5" : 3,
.
.
.
"label_name_XXX" : 4
}
Run Code Online (Sandbox Code Playgroud)
输出很简单:与整数值关联的键[1]名称.如果密钥名称没有改变,我可以轻松地提出类似于这样的JSON Schema:
{
"type": "array"
"title": "Data output",
"items" :{
"properties": {
"label_name": {
"type": "integer",
"default": 0,
"readonly": True,
}
}
},
Run Code Online (Sandbox Code Playgroud)
由于密钥名称本身未知且不断变化,因此我必须为其设计模式.我唯一知道的是密钥是string不超过100个字符.如何为lable_name_xxx不断更改的键定义JSON模式.
[1]不确定我是否使用了正确的术语
requiredJSON Schema中的字段JSON模式的特点properties,required和additionalProperties领域.例如,
{
"type": "object",
"properties": {
"elephant": {"type": "string"},
"giraffe": {"type": "string"},
"polarBear": {"type": "string"}
},
"required": [
"elephant",
"giraffe",
"polarBear"
],
"additionalProperties": false
}
Run Code Online (Sandbox Code Playgroud)
将验证JSON对象,如:
{
"elephant": "Johnny",
"giraffe": "Jimmy",
"polarBear": "George"
}
Run Code Online (Sandbox Code Playgroud)
但如果属性列表不完全, 则会失败elephant, giraffe, polarBear.
我经常将列表复制粘贴properties到列表中required,并且由于拼写错误和其他愚蠢错误而导致列表不匹配时会遇到恼人的错误.
是否有更短的方法来表示所有属性都是必需的,而没有明确命名它们?
我一直在寻找JSON模式标准及其相应的php实现.期待一些开源,我很惊讶,只找到一个PHP实现.我当时正在使用这种技术(JSON)和模式库来解析我传入的浏览器请求.
这种自然的解析/验证活动在XML中看起来很自然,让我想知道为什么JSON不是这种情况.
我最终遇到了疑问.我应该继续我的JSON结构数据交换还是切换到XML? 与XML相比,我首先选择了JSON,因为它的简单性和冗长的语法,但如果我必须重新开发世界上所有现有的标准,这些参数会变得更轻松.我还选择了JSON,希望限制我的Web服务器和移动应用程序之间的通信大小.使用彗星应用程序,XMPP似乎被谷歌,Facebook这样的大品牌实施和使用,用于实时聊天聊天文本或基于视频的消息.
所以实际的问题是:
请帮助我理解,我在这里缺少一些经验?
有没有办法以编程方式从C#类生成JSON模式?
我们可以使用http://www.jsonschema.net/手动完成的事情
是否有一个稳定的库可以根据模式验证JSON ?
json-schema.org提供了一个实现列表.值得注意的是C和C++缺失.
有没有理由我不能轻易找到C++ JSON模式验证器?
没有其他人想要快速验证传入的JSON文件吗?
是否有用于将JSON模式转换为python类定义的python库,类似于jsonschema2pojo - https://github.com/joelittlejohn/jsonschema2pojo - for Java?
我以编程方式生成JSON-Schema架构.我希望确保架构有效.是否有我可以验证我的架构的架构?
请注意我在该句和标题中使用了两次模式.我不想根据我的架构验证数据,我想验证我的架构.