我有一个JSON项目的无序数组。根据规范http://tools.ietf.org/html/draft-zyp-json-
schema-03#section-5.5
,下面的json模式仅在数组中的对象出现在那个顺序中时才会验证。我不想指定顺序,只验证数组中的对象,而不管对象的顺序或数量如何。从规范我似乎无法理解如何完成此工作。
"transactions" : {
"type" : "array",
"items" : [
{
"type" : "object",
"properties" : {
"type" : {
"type" : "string",
"enum" : ["BUILD", "REASSIGN"]
}
}
},
{
"type" : "object",
"properties" : {
"type" : {
"type" : "string",
"enum" : ["BREAK"]
}
}
}
]
}
我在JSON模式Google组上问了同样的问题,很快就得到了回答。fge用户要求我在此处发布他的回复:
你好,
当前规范是v4草案,而不是v3草案。更具体地说,验证规范在这里:
http://tools.ietf.org/html/draft-fge-json-schema-
validation-00该网站不是最新的,我不知道为什么……我将提交拉取请求。
在草案v4中,您可以使用以下命令:
{
"type": "array",
"items": {
"oneOf": [
{"first": [ "schema", "here" ] },
{"other": [ "schema": "here" ] }
]
}
}
例如,这是一个数组的架构,其中的项可以是字符串或整数(尽管可以用更简单的方式编写):
{
"type": "array",
"items": {
"oneOf": [
{"type": "string"},
{"type": "integer"}
]
}
}
这是正确的答案。我更正的架构现在包括:
"transactions" : {
"type" : "array",
"items" : {
"oneOf" : [
{
"type" : "object",
"properties" : {
"type" : {
"type" : "string",
"enum" : ["BUILD", "REASSIGN"]
}
}
},
{
"type" : "object",
"properties" : {
"type" : {
"type" : "string",
"enum" : ["BREAK"]
}
}
}
]
}
}
我有一个无序的JSON项数组。根据https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03#section-5.5规范,下面的json模式只有在数组中的对象以该顺序出现时才进行验证。我不想指定顺序,只需验证数组中的对象,而不管对象的顺序或数量如何。从规范中我似乎无法理解这是如何做到的。
问题内容: 只要我有键值对,解组就非常简单了,但是我将如何以不同的顺序解组不同类型的数组呢?单个元素定义明确且已知,但顺序不明确。 我无法提出一个漂亮的解决方案。 我会尝试对所有元素进行错误处理吗?是否有某种工会类型可以为我做到这一点? 游乐场版 问题答案: Go官方博客上有一篇不错的文章:JSON和GO。可以将“任意数据解码”到接口{}中,并使用类型断言来动态确定类型。 您的代码可能可以修改为:
我想知道如何为不同对象的数组指定JSON模式。这个线程给了我一半的答案,但当我有每种类型的对象的多个实例时,它就失败了。 下面是一个基于这里给出的示例的示例XML,但是重复了“product”对象:- 下面的模式将只在每种类型都有单个实例时(例如,如果“product”只出现一次)验证上面的XML。 为了增加娱乐性,我不能使用像“anyof”这样的关键字,因为我要将这个模式嵌入到一个Swagger
我有一个GET请求电话,如下所示 参数类型错误 下面是请求类: 我不确定我为什么会得到这个。以下是我的IDE的建议。 成为原始类型 有一个接受单个String参数的构造函数 有一个名为valueOf或fromString的静态方法,它接受一个String参数(例如,请参见Integer.valueOf(String)) 具有ParamConverterProvider JAX-RS扩展SPI的注册
我知道number包括integer,但我可以明确定义一个“type”:“integer”。我是说这会违反规范吗?
Intellij告诉我的参数类型不正确。我不熟悉这个错误和。 这个错误还表明: 检查参数@PathParam、@QueryParam等的类型。带批注的参数、字段或属性的类型必须是 > 成为主要类型 有一个接受单个字符串参数的构造函数 具有一个名为 valueOf 或 formString 的静态方法,该方法接受单个 String 参数(例如,请参阅 Integer.valueOf(String))