【发布时间】:2017-10-23 21:37:42
【问题描述】:
我有这个 json:
json = {
"state": {
"reported": {
"figure": {"x":10, "y":12, "z":12},
"gif": {"x":10,"y":12, "z":12}
}
}
}
还有这个字符串列表:
lista = ["json['state']['reported']['figure']['x']",
"json['state']['reported']['figure']['y']",
"json['state']['reported']['gif']['z']"]
我想知道是否有办法使用此列表获取 json 的结果?
【问题讨论】:
-
您可以使用 regex 获取列表中的 dict 键,然后递归地从您的 json 对象中获取值。但理想情况下,您应该更改逻辑以在列表中形成该字符串,并尽可能创建键列表
-
这是一种不安全但有效的方法:
result = [eval(item) for item in lista]。 -
硬编码数据并不那么不安全
-
请不要为此使用
eval(或任何与此相关的)。有一些像jsonpath这样的模块就是为此目的而设计的。 -
@zwer 我不明白为什么每个人都反对 eval。当然
eval(input())正在乞求代码 inj,但是这个x = eval('1')有什么问题?
标签: python arrays json python-2.7 dictionary