【发布时间】:2021-12-29 17:25:56
【问题描述】:
我有一个嵌套非常多的 json 文件,里面有多个块。 以下是该文件的摘录,它有6层以上的嵌套
{
"title": "main questions",
"type": "static",
"value":
{
"title": "state your name",
"type": "QUESTION",
"locator": "namelocator",
}
}
如果有人能帮我解析一下,我可以在 type = question 时找到标题和定位符(因为文件的不同部分可能会有所不同) 而且也同时发生(考虑到文件的规模,顺序会杀死系统)
我一直在使用下面的代码分别获取title和locator的值 pip install jsonpath(在anaconda终端)
from jsonpath import JSONPath
import json as js
data = js.load(f)# f is the path to .json file
JSONPath('$.[?(@.type== "QUESTION")].locator').parse(data)
JSONPath('$.[?(@.type== "QUESTION")].title').parse(data)
问题是: 我正在获取定位器和标题的列表,但由于无法知道函数解析文件的顺序,所以它们都很混乱 自从我遇到这个问题以来已经有一段时间了,唯一的解决方案是遍历文件以查找所有类型==问题,然后再次循环查找定位器和标题(这对于大量的文件)
【问题讨论】:
-
@rv.kvetch 这是一个虚拟格式,文件实际上只有 json
-
所以这是一个en.wikipedia.org/wiki/Tree_traversal 的问题?你有没有考虑过用 json.loads(data) 把它解析成一个 python 对象,这样你就可以控制迭代了?
-
@KennyOstrom 不,我没有,我会尽快更新,谢谢 更新:这个对象的格式还是一样的,请问还有其他想法吗?
-
格式应该是一样的。这个想法是你控制迭代,所以当你找到一个问题时,你把定位器和标题拉在一起。好的,可以包含一个 pip 命令和 import 语句吗?当我在该数据上使用该 expr 时,我只是得到 False。
-
刚刚包含了 pip 和 import 语句@KennyOstrom
标签: python json jsonpath json-path-expression