用于 JSON 的结构化查询语言(在 Python 中)
我正在开发一个系统,用来输出一个JSON文件,然后用Python解析这些数据并在用户界面(PySide)中显示出来。现在我想给这个系统添加过滤功能,我在想,如果能找到一个现成的JSON查询系统(在Python中),那就能省下很多开发时间。我发现了这个讨论:
不过那个讨论主要是针对基于网页的系统。有没有类似的Python解决方案呢?
补充说明一下:
我生成的数据格式大概是这样的:
{
"Operations": [
{
"OpID": "0",
"type": "callback",
"stringTag1": "foo1",
"stringTag2": "FooMsg",
"Children": [...],
"value": "0.000694053"
},
{
"OpID": "1",
"type": "callback",
"stringTag1": "moo1",
"string2": "MooMsg",
"Children": [...],
"value": "0.000468427"
}
}
其中“Children”可能是相同内容的嵌套数组(其他操作)。这个系统会允许用户为数据添加自己的标签。我希望能有一个查询系统,让用户也能定义自己的“过滤条件”,所以我才问关于查询语言的事。如果能有一个功能,让我可以像这样“选择所有类型为‘callback’的操作”,那就太好了。
有人提到Pync这个建议挺有意思的,我会去看看。
4 个回答
3
你还可以看看PythonQL,这是一种扩展了Python的查询语言,可以处理SQL和JSON查询。你可以在这里找到它:pythonql
14
我注意到这个问题几年前就有人问过,但如果还有其他人看到这个,这里有一些新的项目在尝试解决同样的问题:
- ObjectPath(适用于Python和JavaScript): http://objectpath.org/
- jsonpath(Python版本的JavaScript同类工具): https://pypi.org/project/jsonpath/
- yaql: https://yaql.readthedocs.io/en/latest/readme.html
- pyjq(Python与jq的绑定,jq是一个处理数据的工具): https://stedolan.github.io/jq/: https://pypi.org/project/pyjq/
- JMESPath: https://github.com/jmespath/jmespath.py
我个人选择了 pyjq
,因为我经常用 jq
来探索数据,但ObjectPath看起来也很不错,而且不限于处理json格式。