【发布时间】:2018-03-06 14:35:30
【问题描述】:
我有一个“复杂”(嵌套未定义深度并包含列表)json 字典,它存储我的项目的配置设置,该文件的 sn-p:
{
"system_configuration": {
"SYSLOGD_ARGS":"-n -O /var/log/messages"
, "KLOGD_ARGS":"-n"
, "dbus": {
"location":"/usr/share/dbus-1/system.d/ab.conf"
, "services": [
"com.stezza.ab"
, "com.stezza.keyboard"
, "com.stezza.mpd"
, "com.stezza.remote"
, "com.stezza.volume" ]
}
, "wpa_supplicant": {
"location": "/etc/wpa_supplicant.conf"
, "ctrl_interface": "/var/run/wpa_supplicant"
, "update_config": "1"
, "network": [
{ "ssid": "OpenWrt"
, "psk": "f22da64fa33936391b0ace4d544c63c5b340877327d31ad028296c875c0d8adb" }
, { "ssid": "SecondNetwork"
, "psk": "f22da64fa33936391b0ace4d544c63c5b340877327d31ad028296c875c0d8adb" } ]
}
}
我将 json 文件加载到 Python 中的字典中。
给定这样的路径,正确的方法是什么:
-
"/system_configuration/dbus/1"
- 应该返回“com.stezza.keyboard”
-
"/system_configuration/wpa_supplicant/network/0/ssid"
- 应该返回“OpenWrt”
(背景,可能不相关,这条路径将通过烧瓶<path:>-url 找到我,作为RESTful API 的一部分)
我正在考虑分割路径,循环它并检查类型是否是处理列表的列表,但我觉得可能有一种更“pythonic”的方式来做到这一点。
【问题讨论】:
-
你见过jsonpath吗?如果您的查询是“$.system_configuration.dbus.1”,它就可以工作。
-
搜索 jsonpath 会返回大量有用的资源.. 拥有正确的关键字再次使一切变得不同。谢谢。
标签: python json list dictionary