Python模式匹配消息和可选参数

2024-09-29 08:20:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python的schemajson schema来验证具有嵌套字典和列表的字典:

message = 
    {"pagination":
    {"page":1,"perPage":25},
    "items":[{"id":1, "settings":[{"name":"name1","value":true}]},
             {"id":2 ,"settings":[{"name":"name2","value":true}}]}
    }

我需要进行以下验证:

  1. “分页”在消息中
  2. “items”在消息中,并且至少包含一个成员
  3. “items”中的每个项都包含一个“id”
  4. 我们不关心项目可能包含的其他元素(如“设置”)

如何使模式更像正则表达式?(例如:我不知道下一条消息的项“id”之上可能包含哪些附加元素,但只要满足前三个条件-我希望验证它)。你知道吗

例如,架构还必须识别以下消息:

message = 
{"pagination":
{"page":1,"perPage":25},
"items":[{"id":1, "type": "A"},
         {"id":2 ,"type": "B"}]}
}

Tags: nameidtrue消息元素message字典settings
1条回答
网友
1楼 · 发布于 2024-09-29 08:20:02

这听起来像是JSON模式的完美用例。JSON模式验证是减法的。所有JSON文档都对空模式({})有效。然后,模式中的每个关键字将所有JSON文档的集合约束为更有用的内容。因此,您可以声明一个对象必须有一个“id”属性,而不是显式地声明允许任何其他属性,因为这只是JSON模式的正常操作模式。你知道吗

我几乎为您编写了这个非常简单的模式作为一个示例,但后来决定最好只指向“Understanding JSON Schema”,这样您就可以自己学习,而不是我给您提供解决方案。但是,请问另一个(更具体)的问题,如果在阅读教程后卡住了。你知道吗

相关问题 更多 >