标签: jsonschema

如何通过 Python 使用 jsonschema 验证字典列表

我有一个这样的字典列表:

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)

如何创建正确的架构来验证我的列表?先感谢您。

python jsonschema python-jsonschema

2
推荐指数
1
解决办法
942
查看次数

JSON Schema:表示在字符串类型中编码对象类型的约束

在我的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)

javascript schema json schema-design jsonschema

1
推荐指数
1
解决办法
917
查看次数

在Firebase中对私有数据访问的数据结构进行非规范化处理?

我想创建可扩展的数据(跟踪用户的私人数据).

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 jsonschema data-structures firebase firebase-security

1
推荐指数
1
解决办法
1051
查看次数

Json Schema 验证:至少需要两个字段之一

我正在使用以下 Json Schema 验证包:

https://github.com/hasbridge/php-json-schema

使用该验证包,我想在以下场景中进行验证:

字段- A,B

验证条件- 如果A发送值,则B不需要。如果B发送了值,则A不需要。但是我们至少需要表单中的两个字段值之一。

谁可以帮我这个事?

javascript validation json jsonschema

1
推荐指数
1
解决办法
1502
查看次数

JSON SCHEMA - 如何检查数组中是否存在值

我有一个简单的问题。我有一个属性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)

jsonschema

1
推荐指数
1
解决办法
2607
查看次数

JSON 数据枚举类型

我有一个这样的 JSON 对象。

var data={
"Company" : "XYZ",
"company" : ['RX','TX']
}
Run Code Online (Sandbox Code Playgroud)

上面的json数据有2个键公司,类型是字符串,公司类型是枚举但不是数组(我不知道如何在json数据中表示枚举),因为哪个json模式说它是一个数组。我希望它是枚举类型。

那么我将如何在 JSON 数据中表示 Enum 类型?

json jsonschema

1
推荐指数
1
解决办法
2万
查看次数

使用Jackson从POJO数组生成JSON模式

我想使用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生成模式?
在此先感谢您的帮助!

java arrays json jsonschema jackson

1
推荐指数
1
解决办法
1964
查看次数

如何在JSON模式中扩展模式?

我正在使用JSON模式进行数据建模。我定义一个基Document模式,即我以后使用来定义模型模式(例如ProductCategoryUser等等)。

我这样做是因为我希望所有模型都继承某些结构/规则。例如每模型实例应当具有某些共同的性质(如,idcreatedAtupdatedAt)。在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)
  1. 如何指定文档元模式“扩展”的基础架构JSON(草案-07),这样我就不必定义草案(所有属性$schemaid …

schema json jsonschema

1
推荐指数
1
解决办法
3465
查看次数

将JSON对象A转换为JSON B对象,其中B是A的严格子集.两者都由两个json模式控制.在.net核心

我得到了一堆转换,以便将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.

c# json jsonschema .net-core

1
推荐指数
1
解决办法
73
查看次数

JSON模式属性取决于先前属性的值

我希望能够编写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的答案有效。

有什么想法吗?

json jsonschema

1
推荐指数
1
解决办法
1765
查看次数