我有一个无序的JSON项目数组.根据规范http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.5,下面的json模式将仅验证数组中的对象是否显示为IN THAT ORDER.我不想指定一个订单,只需验证数组中的对象,无论对象的顺序或数量如何.从规范我似乎无法理解这是如何做到的.
"transactions" : {
"type" : "array",
"items" : [
{
"type" : "object",
"properties" : {
"type" : {
"type" : "string",
"enum" : ["BUILD", "REASSIGN"]
}
}
},
{
"type" : "object",
"properties" : {
"type" : {
"type" : "string",
"enum" : ["BREAK"]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud) 链接到规范:http://json-schema.org/latest/json-schema-validation.html#anchor64
第5.4.4.2节规定:
针对这三个关键字成功验证对象实例取决于"additionalProperties"的值:如果其值为布尔值true或模式,则验证成功; ...
第5.4.4.3节规定:
如果不存在"additionalProperties",则可以认为它具有空模式作为值.
好的,所以如果"additionalProperties"不存在,它将被视为存在空模式.如果它是一个模式(任何类型),那么无论其他任何考虑因素,该对象都会成功验证.
但是这与第5.4.4.5节"示例"中的断言相矛盾,即给定实例无法针对给定的模式进行验证(它没有为"additionalProperties"指定任何内容).
有人可以解释我在哪里以及以何种方式误解了规范?
尝试编写一个使用RegEx来验证项目值的JSON模式.
有一个名为progBinaryName的项目,其值应该与此RegEx字符串相同"^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$".
找不到任何实际解释在JSON模式中使用RegEx的教程或示例.
任何帮助/信息将非常感谢!
感谢:D
JSON SCHEMA
{
"name": "string",
"properties": {
"progName": {
"type": "string",
"description": "Program Name",
"required": true
},
"ID": {
"type": "string",
"description": "Identifier",
"required": true
},
"progVer": {
"type": "string",
"description": "Version number",
"required": true
},
"progBinaryName": {
"type": "string",
"description": "Actual name of binary",
"patternProperties": {
"progBinaryName": "^[A-Za-z0-9 -_]+_Prog\\.(exe|EXE)$"
},
"required": true
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
警告!更好地检查你的JSON.
实例不是必需的类型 - http://json-schema.org/draft-03/hyper-schema#
架构是有效的JSON,但不是有效的架构.
验证结果:失败
[ {
"level" : "warning",
"schema" : …Run Code Online (Sandbox Code Playgroud) 鉴于以下JSON模式是有可能表明,"名称"属性应是唯一的(即不应该有两个项目具有相同的"名"的"元素"阵列英寸
{
"root": {
"type": "object",
"properties": {
"elements": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"title": "Element Name",
"minLength": 3,
},
"url": {
"type": "string",
"title": "Some URL"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用uniqueItems关键字,但它似乎是为简单的值列表而设计的.
我在PostgreSQL中找不到有关JSON模式验证的任何信息,有没有办法在PostgreSQL JSON数据类型上实现JSON模式验证?
我有一个json文档,其中一个部分可以是null或子对象,如下所示:
[{
"owner":null
},
{
"owner":{
"id":1
}
}]
Run Code Online (Sandbox Code Playgroud)
问题是,是否可以使用ref在json模式草案v4中对此进行建模?
我想要的是这样的
{
"type":"object",
"properties":{
"owner":{
"type":["null", "object"],
"$ref":"#/definitions/id"
}
},
"definitions":{
"id":{
"type":"object",
"properties":{
"id":{
"type":"number"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的JSON字符串格式为:
{
"count":3,
"data":[
{
"a":{"ax":1}
},
{
"b":{"bx":2}
},
{
"c":{"cx":4}
}
]
}
Run Code Online (Sandbox Code Playgroud)
该data数组包含许多a和b和c.而且没有其他种类的对象.
如果count==0,data应该是一个空数组[].
我正在使用https://github.com/hoxworth/json-schema来验证Ruby中的这些JSON对象.
require 'rubygems'
require 'json-schema'
p JSON::Validator.fully_validate('schema.json',"test.json")
Run Code Online (Sandbox Code Playgroud)
该schema.json方法是:
{
"type":"object",
"$schema": "http://json-schema.org/draft-03/schema",
"required":true,
"properties":{
"count": { "type":"number", "id": "count", "required":true },
"data": { "type":"array", "id": "data", "required":true,
"items":[
{ "type":"object", "required":false, "properties":{ "a": { "type":"object", "id": "a", "required":true, "properties":{ "ax": { "type":"number", "id": "ax", "required":true …Run Code Online (Sandbox Code Playgroud) 假设我有一个布尔类型,但我不只是想指定它将是布尔值,我想指定它将具有值false.要指定它将是布尔值,我执行以下操作:
{
"properties": {
"some_flag": {
"type": "boolean"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试将上面的"boolean"替换为"false"和false(不带引号),但都不起作用.
我的问题是我正在将地图内容序列化为JSON.
在输出(JSON)中,我有跟随键/名称语法规则的对象.
密钥是从map键创建的,名称来自值.
模型示例:
class Storage {
Map<String,String> values = new HashMap<>();
{
map.put("key1","key1");
map.put("key2","key2");
map.put("key3","key3");
}
}
Run Code Online (Sandbox Code Playgroud)
JSON示例对象:
{
key1=value1,
key2=value2,
key3=value3
}
Run Code Online (Sandbox Code Playgroud)
JSON架构:
{
"name": "storage",
"description": "Store of key values",
"properties": {
// How can we describe the properties if we do not know the name ?
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我不知道它的价值是什么,但我知道它们会是一些.
你能帮我提一下架构的完整定义吗?
免责声明:
我知道这也可以序列化为
{
values: [
{key="key1", value="value1"},
{key="key2", value="value2"},
{key="key3", value="value3"}
]
}
Run Code Online (Sandbox Code Playgroud)
但是不希望在JSON中有数组.
Apache Avro提供紧凑,快速的二进制数据格式,丰富的数据结构用于序列化.但是,它需要用户为需要序列化的对象定义模式(在JSON中).
在某些情况下,这是不可能的(例如:该Java对象的类具有一些成员,其类型是外部库中的外部Java类).因此,我想知道有一个工具可以从对象的.class文件中获取信息,并为该对象生成Avro架构(如Gson使用对象的.class信息将某些对象转换为JSON字符串).
jsonschema ×10
json ×7
java ×2
validation ×2
avro ×1
javascript ×1
postgresql ×1
regex ×1
ruby ×1
schema ×1