是否可以使用诸如“['time'] ['updated']”之类的变量来解析JSON?

时间:2018-02-03 21:38:17

标签: python json parsing syntax

好的,json_tree是一个包含如下内容的变量:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(!mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.enable();
}

你能把它作为变量传递......

    json_tree = "['time']['updated']"

喜欢这样??

    hdr = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }
    req = urllib.request.Request(url, headers=hdr)
    readdata = urllib.request.urlopen(req)
    json_data = readdata.read()
    json_dict = json.loads(json_data)

我的目的是将.ini中的许多json_tree值中的一个传递给包含上述代码的类。 如果这是一个糟糕的计划,那么有什么用呢?

谢谢!

1 个答案:

答案 0 :(得分:1)

这是jsonpath的用例,其中语法将使用表达式time.updated来引用相关值。

json_expr = "time.updated"
json_dict = {"time": {"updated": "2018-01-05"}}

from jsonpath_rw import parse as parse_jsonpath

results = parse_jsonpath(json_expr).find(json_dict)
if len(results) == 0:
  raise Exception("Could not find any matches for %r in %r" % (json_expr, json_dict))
elif len(results) > 1:
  raise Exception("Expression %r had more than one match; cannot use for configuration" % (json_expr,))

result = results[0].value