【发布时间】:2019-08-06 01:00:14
【问题描述】:
有没有什么方法可以使用 jsonschema 基于模式验证 json 并从 json 中去除未知键?
架构示例:
{
"type":"object",
"$schema": "http://json-schema.org/draft-03/schema",
"required":False,
"properties":{
"address": {
"type":"object",
"required":True,
"properties":{
"city": {
"type":"string",
"required":True
}
},
"phoneNumber": {
"type":"array",
"required":False,
"items":
{
"type":"object",
"required":False,
"properties":{
"number": {
"type":"string",
"required":False
}
}
}
}
}
}
示例数据:
{
"address":{
"streetAddress": "1 Street",
"city":"New York",
"name": "Tom",
"houseNumber":18
},
"phoneNumber":[
{
"type":"home",
"number":"212 222 2222"
}
]
}
所以验证器应该传递数据并返回剥离后的版本,如下所示:
{
"address":{
"city":"New York",
},
"phoneNumber":[
{
"number":"212 222 2222"
}
]
}
Cerberus 确实具有“purge_unknown”功能,但它不支持 JSON-Schema。
【问题讨论】:
-
过滤不是 JSON Schema 的功能。另见stackoverflow.com/questions/57000651/…
-
@gregsdennis 我想知道我是否使用验证错误列表并过滤掉未知键
-
您可以通过遍历示例 JSON 并检查模式数据中的键匹配来强制您想要保留的值。如果没有匹配项,则只需在示例中删除该项目。
标签: python json python-3.x jsonschema