我有一个这样的字典列表:
list_of_dictionaries = [{'key1': True}, {'key2': 0.2}]
Run Code Online (Sandbox Code Playgroud)
我想使用 jsonschema 包来验证它。
我创建了这样的架构:
schema = {
"type": "array",
"items": {
"type": "object",
"properties": {
"key1": {
"type": "boolean"
},
"key2": {
"type": "number"
}
},
"required": ["enabled"]
}
}
Run Code Online (Sandbox Code Playgroud)
但这对于我的列表来说是不正确的,因为要使其正常工作,我的列表应该是这样的:
list_dict = [{'key1': True, 'key2': 0.5}]
Run Code Online (Sandbox Code Playgroud)
如何创建正确的架构来验证我的列表?先感谢您。
在我的JSON序列化数据中,我有嵌套对象:
{
"A" : { "A1": 1,
"A2": 2 },
"B" : { "B1": 3,
"B2": 4 }
}
Run Code Online (Sandbox Code Playgroud)
由于给定的约束我无法影响,我需要压扁结构.这意味着,深度大于1的每个对象都必须编码为字符串.应用于上面的例子,这是这样的:
{
"A" : "\{\"A1\": 1, \"A2\": 2\}"
"B" : "\{\"B1\": 3, \"B2\": 4\}"
}
Run Code Online (Sandbox Code Playgroud)
因为我需要在JSON Schema中表达这个约束,所以我几乎要遵循它的语法规则.我猜这些对象的类型将是string或者object.
{
"title": "My Schema",
"type": "object",
"properties": {
"A": {
"type": "string vs. object"
"B": {
"type": "string vs. object"
}
Run Code Online (Sandbox Code Playgroud) 我想创建可扩展的数据(跟踪用户的私人数据).
Firebase文档建议将子对象嵌套在父对象下,如下所示:
{
"users": {
"google:1234567890": {
"displayName" : "Username A",
"provider" : "google",
"provider_id" : "1234567890",
"todos": {
"rec_id1": "Walk the dog",
"rec_id2": "Buy milk",
"rec_id3": "Win a gold medal in the Olympics",
...
}
}, ...
}
}
Run Code Online (Sandbox Code Playgroud)
(其中rec_id是Firebase.push()生成的唯一键.)
但正如Denormalizing Your Data is Normal中提到的那样,我认为以这种方式构造它会更好:
{
"users" : {
"google:1234567890" : {
"displayName" : "Username A",
"provider" : "google",
"provider_id" : "1234567890"
}, ...
},
"todos" : {
"google:1234567890" : {
"rec_id1" : {
"todo" …Run Code Online (Sandbox Code Playgroud) 我正在使用以下 Json Schema 验证包:
https://github.com/hasbridge/php-json-schema
使用该验证包,我想在以下场景中进行验证:
字段-
A,B验证条件- 如果
A发送值,则B不需要。如果B发送了值,则A不需要。但是我们至少需要表单中的两个字段值之一。
谁可以帮我这个事?
我有一个简单的问题。我有一个属性groupBy,它是一个数组,只包含两个可能的值“产品”和“日期”。现在我想再拍物业需要基于值存在中GROUPBY阵列。在这种情况下,当我的groupBy数组包含“日期”时,我想进行解析!我怎样才能做到这一点 ?
谁可以检查数组是否包含值?
var data = {
"pcsStreamId": 123123,
"start": moment().valueOf(),
"end": moment().valueOf(),
"groupBy" : ["product"]
};
var schema = {
"type": "object",
"properties": {
"pcsStreamId": { "type": "number" },
"start": { "type": "integer", "minimum" : 0 },
"end": { "type": "integer", "minimum" : 0 },
"groupBy": {
"type": "array",
"uniqueItems": true,
"items" : {
"type": "string",
"enum": ["product", "date"]
},
"oneOf": [
{
"contains": { "enum": ["date"] },
"required": …Run Code Online (Sandbox Code Playgroud) 我有一个这样的 JSON 对象。
var data={
"Company" : "XYZ",
"company" : ['RX','TX']
}
Run Code Online (Sandbox Code Playgroud)
上面的json数据有2个键公司,类型是字符串,公司类型是枚举但不是数组(我不知道如何在json数据中表示枚举),因为哪个json模式说它是一个数组。我希望它是枚举类型。
那么我将如何在 JSON 数据中表示 Enum 类型?
我想使用Jackson 2.7.0从POJO数组生成JSON模式:
JsonSchema schema = mapper.generateJsonSchema(MyClass[].class);
Run Code Online (Sandbox Code Playgroud)
所以我希望得到JSON模式:
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
}
...
Run Code Online (Sandbox Code Playgroud)
但是得到:
{
"type": "array"
}
Run Code Online (Sandbox Code Playgroud)
如何获得预期的架构?
是否存在任何更好的库可以从POJO生成模式?
在此先感谢您的帮助!
我正在使用JSON模式进行数据建模。我定义一个基Document模式,即我以后使用来定义模型模式(例如Product,Category,User等等)。
我这样做是因为我希望所有模型都继承某些结构/规则。例如每模型实例应当具有某些共同的性质(如,id,createdAt,updatedAt)。在OOP术语中:Product extends Document因此,它继承其实例属性。在模式中,术语(我认为)Document是用于创建模型模式的元模式。
我已经定义了Document模式,如下所示:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"id": "http://example.com/schemas/document.json#",
"title": "Document",
"type": "object",
"additionalProperties": false,
"required": ["type", "name", "fields"],
"properties": {
"type": {
"constant": "document"
},
"name": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"readOnly": {
"type": "boolean"
},
"properties": {
// common properties
// model-specific properties
}
}
}
Run Code Online (Sandbox Code Playgroud)
$schema,id …我得到了一堆转换,以便将JSON数据结构从超集转换为子集.EX:
A :
{
Name {
first: bob
middle: john
last : bobster
}
}
B :
{
Name {
first: bob
last : bobster
}
}
Run Code Online (Sandbox Code Playgroud)
两者都有一个json模式描述它们的结构,并且结构完全相同,是B只是缺少A的一些属性
有关将A映射到B的简单方法的任何想法(基本上剥离B中不存在的A属性)?我想知道是否有一些库或C#语言功能可以使这个微不足道.
使用C#和.NET Core.
我希望能够编写JSON模式代码,该代码允许一个属性的值依赖于另一个属性的值。
更具体地说,我有两个问题A和B。只有当问题A有特定答案时,问题B的答案才能为null。如果问题A没有该答案,则问题B的值必须为null。
例如
A: Do you like cars? Yes/No
B: What is your favourite car?
Run Code Online (Sandbox Code Playgroud)
如果对问题A的回答为“是”,则只能回答问题B,否则必须为空。
经过一些研究,我发现了这个Stack Overflow线程,该线程描述了枚举和if-then-else其他方法来回答这个问题。枚举非常接近我的需要,定义如下:
{
"type": "object",
"properties": {
"foo": { "enum": ["bar", "baz"] },
"bar": { "type": "string" },
"baz": { "type": "string" }
},
"anyOf": [
{
"properties": {
"foo": { "enum": ["bar"] }
},
"required": ["bar"]
},
{
"properties": {
"foo": { "enum": ["baz"] }
},
"required": ["baz"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
在上文中,当的值Foo是"Bar",则该Bar属性是必需的。同样具有的值"Baz"。但是,我不需要将属性设置为必需,而是希望能够将属性的类型从null更改为string。或做一些事情使B的答案有效。
有什么想法吗?
jsonschema ×10
json ×8
javascript ×2
schema ×2
.net-core ×1
arrays ×1
c# ×1
firebase ×1
jackson ×1
java ×1
python ×1
validation ×1