python - 按名称解析 json 值
问题描述
任何人都可以指出我在Python中解析一些JSON的正确方向吗,我一直无法找到一种方法来做到这一点
data = {
"profile": {
"properties": [
{
"name": "SavedNetworkAddress",
"type": "StrProperty",
"value": "111.111.111.111"
}, {
"name": "PlayerName",
"type": "StrProperty",
"value": "TEST"
}, {
"name": "bFirstSpawned",
"type": "BoolProperty",
"value": true
}
]
}
}
如果我使用下面的行,它将返回该部分111.111.111.111
中的值'SavedNetworkAddress'
,但是在我的源数据中,该特定部分可能不在数组的第一个位置
print(data['profile']['properties'][0]['value'])
我需要使用一些东西来获取与“SavedNetworkAddress”相同部分中的值,但我无法找到在 python 中执行此操作的方法
我已经能够让它在 powershell 中工作,但是由于文件的大小,它需要很长时间才能运行
谢谢!
解决方案
Json 类似于 Python 中的字典。由于您的键的值properties
是一个 json 数组(这里是字典列表,您可以简单地遍历列表并查看键是否name
匹配SavedNetworkAddress
下面是相同的代码:
for i in range(len(data['profile']['properties'])):
if data['profile']['properties'][i]['name'] == "SavedNetworkAddress":
print(data['profile']['properties'][i]['value'])
编辑
您的数据中有一个小错误,Python 将无法识别true
. 所以请转换true
为字符串或将其转换为 python 关键字True
。
推荐阅读
- stored-procedures - 雪花存储过程从 dbt 失败
- java - 为 azure-storage-blob 创建 BlobServiceClient 时出现 IllegalStateException
- html - Bootstrap 5 导航栏
- c++ - 不递归迭代
- java - 放心 - 如何创建新的 zip 文件并保存每次运行的 API 响应
- gitlab - Gitlab:不要将所有标签从问题复制到合并请求
- tfs - 在 java 代码中查找 Shelveset 文件列表(带有 ; 的 URL)
- ios - 离子5
- c++ - Qt QRegExp: replace spaces in a quoted string
- reactjs - Ionic 5:如何以编程方式关闭离子选择