【发布时间】:2021-12-11 17:17:18
【问题描述】:
我有一个想要使用 Pydantic 验证的 json 对象。
我面临的问题是:
1 - 我不知道 JSON 中有多少字段。下面的示例有 2 个键\字段:“225_5_99_0”和“225_5_99_1”
2 - 在这种情况下,我不知道字段的名称:它可以是“225_5_99_0”或“226_0_0_0”。我只知道他们遵守一些约定。
3 - 某些字段的关键字对于模型的字段名称无效,例如“*”键。我可以通过将字段名称别名为“星号”来克服这一点。
关于处理这种 JSON 的最佳方法有什么想法吗?
{
"225_5_99_0": {
"*": {
"flag": "",
"group1": "225.5.99.0",
"group_type": "M",
"uptime": "0:11:23",
"iif": {"lo5": {
"flag": "R",
"uptime": "0:44:41"
}
},
"oil": {
"bun_1215": {
"flag": "",
"join_time": "00:03:14",
"uptime": "0:42:27"
},
"bun_1218": {
"flag": "",
"join_time": "00:02:44",
"uptime": "0:44:41"
}
},
"address": "100.100.100.100",
"rp": "*",
"source": "*",
"upstream": "Joined(00:00:19)"
}
},
"225_5_99_1": {
"*": {
"flag": "",
"group1": "225.5.99.0",
"group_type": "M",
"uptime": "0:11:23",
"iif": {"lo5": {
"flag": "R",
"uptime": "0:44:41"
}
},
"oil": {
"bun_1215": {
"flag": "",
"join_time": "00:03:14",
"uptime": "0:42:27"
},
"bun_1218": {
"flag": "",
"join_time": "00:02:44",
"uptime": "0:44:41"
}
},
"address": "100.100.100.100",
"rp": "*",
"source": "*",
"upstream": "Joined(00:00:19)"
}
},
}
}
【问题讨论】:
-
可以提供更多信息:您究竟想验证什么?如果您可以发布一些有用的模型草案。一般来说,pydantic 是一个 parsing 库,而不是一个验证库:这里的区别可能并不重要,但是您想将其视为为您提供了有效的 models (和如果不能,则放弃)而不是验证其输入。因此,了解您希望模型看起来像什么会有所帮助...
-
谢谢@alex_noname - 我使用了你对链接问题的回复。