Python 根据yaml配置验证对象值
我有一个应用程序,其中一个嵌套的Python字典是基于一个JSON文档创建的,作为API的响应。例如:Python 根据yaml配置验证对象值,python,configuration,yaml,Python,Configuration,Yaml,我有一个应用程序,其中一个嵌套的Python字典是基于一个JSON文档创建的,作为API的响应。例如: colleagues = [ { "name": "John", "skills": ["python", "java", "scala"], "job": "developer" }, { "name": "George", "skills": ["c", "go", "nodejs"], "job": "developer" }] 此字典可以有更多嵌套级别。
colleagues = [
{ "name": "John",
"skills": ["python", "java", "scala"],
"job": "developer"
},
{ "name": "George",
"skills": ["c", "go", "nodejs"],
"job": "developer"
}]
此字典可以有更多嵌套级别。
我想做的是让用户定义自己的任意条件,例如,为了找到掌握python技能的同事,或者YAML配置文件中的John,我将使用该文件对照python字典进行检查
我考虑让他们在YAML文件中以以下方式配置,但这需要使用exec,出于安全原因,我希望避免使用exec:
constraints:
- "python" in colleagues[x]["skills"]
- colleagues[x]["name"] == "John"
对于此类问题,还有哪些其他选项,以便用户可以为字典值指定自己的约束?同样,上面的字典只是一个例子。实际的查询在大小和嵌套级别上要大得多。您可以使用Lucene查询解析器将skill:python和name:John等查询转换为可执行谓词函数,然后使用这些谓词筛选同事列表。谷歌搜索python lucene parser将显示几个解析选项。是否可以使用获取的JSON基于此创建树,然后使用skill:python和name:John等查询来查询树?我只是想确保手动创建树不会有任何开销。是的,使用Python的json模块将树转换为dict列表,然后使用从查询中创建的谓词函数筛选出所需的dict。