gpt4 book ai didi

python - 在Python 3.6中验证JSON,其中内部blob的数量是可变的?

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:14 25 4
gpt4 key购买 nike

我有一个 JSON,在存储之前我需要验证它的格式是否正确。我看到了 jsonschema 包和 SO 中与之相关的问题,但就我而言,列表“数据”中可以有任意数量的内部内容,这也是根。我的代码应该怎样才能完成需要的事情?下面的代码块也给出了错误数据(不正确的结构)的“通行证”:

json_document = '''{
"Data": [
{
"vol_no": "001",
"loc": "2341",
"ts": "2016-02-04 14:25:19.000000"
},
{
"vol_no": "023",
"loc": "4635",
"ts": "2016-02-02 01:14:38.000000"
}
]
}'''



schema = {
"type": "object",
"properties": {
"vol_no": {"type": "string"},
"loc": {"type": "number"},
"ts": {"type": "string"}
},
}

for idx, item in enumerate((json.loads(json_document))['Data']):
try:
print(item)
print(schema)
validate(item, schema)
print("Record #{}: OK\n".format(idx))
except jsonschema.exceptions.ValidationError as ve:
print("Record #{}: ERROR\n".format(idx))
print(str(ve) + "\n")

不正确的结构示例。我更改了第一个元素的键名称,并从 JSON 数组的第二个元素中删除了 ts,但它也不会出错:

json_document = '''{
"Data": [
{
"abcdsddfwq": "001",
"loc": "2341",
"ts": "2016-02-04 14:25:19.000000"
},
{
"vol_no": "023",
"loc": "4635"
}
]
}'''

最佳答案

您可以看出数据必须是一个数组,其中所有项目都是具有某些必需属性的对象:

{
"type": "array",
"items": {
"type": "object",
"properties": {
"vol_no": "string",
"loc": "string",
"ts": "string"
},
"required": ["vol_no", "loc", "ts"]
}
}

关于python - 在Python 3.6中验证JSON,其中内部blob的数量是可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com