python-3.x - 嵌套 JSON 数据解析
问题描述
我正在尝试解析来自 API 的响应,并且遇到了从响应中的嵌套字典列表中提取特定值的问题。这是一个片段:
[{'fieldId': '27d8ea79-d59c-4089-8763-09af28958838', 'name': '源跟踪代码', 'value': 'NAD 2020', 'type': 'STRING'}, {'fieldId' : '07258695-2199-41f7-97bb-d44e7f1cf6bc', 'name': '注册状态', 'value': 'Registered', 'type': 'STRING'}, {'fieldId': '2bd56482-9941-47e8 -95e3-6acc42f42a5a', 'name': 'Seventeen or Younger', 'value': 'false', 'type': 'BOOLEAN'}, {'fieldId': '3b2c5a93-6d99-4a98-8519-f1a998b4e215', 'name':'状态','value':'false','type':'BOOLEAN'},{'fieldId':'4cfb1b32-7b64-4d15-b5d3-b767e8b42d36','name':'种族或民族', 'value': 'African-American', 'type': 'STRING'}, {'fieldId': '59f5b00e-c00f-4981-b4a5-5e62615dce62', 'name': 'Photo Waiver', 'value': 'true ', 'type': 'BOOLEAN'}, {'fieldId': '5b4444a0-6960-42c5-aae1-fbfd8f0e7983', 'name': 'Status', 'value': 'Active', 'type': 'STRING '},{'fieldId':'5d276915-0f81-43e5-bc1c-03f7092e5f14','name':'Party','value':是,'type':'STRING'},{'fieldId':'6a6ecb71 -ca6f-4637-bfc2-3fb53c1ab14e','name':'新状态','value':'false','type':'BOOLEAN'},{'fieldId':'6dbd00e1-6c38-436e-b04b- ad8583004d59', '姓名': '年龄','value': '35', 'type': 'NUMBER'}, {'fieldId': '879364da-64fa-42af-a720-ea299a67fdb2', 'name': '协助', 'value': 'true', 'type':'BOOLEAN'},{'fieldId':'880d4356-bfaa-46d1-9b5d-007e17c13180','name':'无文本','value':'false','type':'BOOLEAN' }, {'fieldId': '8ba4046f-b0e5-4a6d-993f-176292d1d3fb', 'name': '免责声明', 'value': 'true', 'type': 'BOOLEAN'}, {'fieldId': '9249f64a-c37b-4498-aabb-484ceb4abb18', 'name': '兴趣', 'value': 'false', 'type': 'BOOLEAN'}, {'fieldId': 'a5110cc7-4578-4cf9-bba7 -404a5b4fe779','名称':'分数','值':'33.1','类型':'BIGDECIMAL'},{'fieldId':'bf9da203-5b7f-48b0-8889-9eba340cd263','名称':'删除CRM记录','值' : 'false', 'type': 'BOOLEAN'}, {'fieldId': 'c13eea40-7de3-42a7-b5ed-bea718b48ce5', 'name': '你会支付单间的额外费用吗?', ' value':'false','type':'BOOLEAN'},{'fieldId':'c53fdc12-4b7c-4f35-aed7-0d9856e42cac','name':'Name','value':'DISTRICT,'type ':'STRING'},{'fieldId':'c62b7652-1517-4f4e-a986-b3d08fd4fede','name':'Score','value':'97.4','type':'BIGDECIMAL'},{ '字段ID':'d0958dd7-c16a-4d69-b3f2-a14d83c0dd3e','name':'ID','value':'L250','type':'STRING'},{'fieldId':'d5d82695-0f24-483c-9304- 2ab4bedc6294', 'name': '你将参加的天数:', 'value': '星期一, 9 am - 8 pm', 'type': 'STRING'}, {'fieldId': 'ea8e091f-27df-41d8- b866-6f14cad4e457', 'name': 'Do Not Call', 'value': 'false', 'type': 'BOOLEAN'}, {'fieldId': 'f7b21731-f931-40ec-964f-db18b0d2d0d3', ' name':'婚姻状况','value':'未婚','type':'STRING'},{'fieldId':'fbb40bca-5929-4712-8595-51ab832ad8f7','name':'你好吗参加?','价值':'亲自','类型':'STRING'}]
这个片段是一个记录。所以里面有name字段,address字段等等。上面的代码片段来自API响应中一个叫做customFieldValues的字段。
我要做的是仅提取年龄值。因为它被无用地标记为“值”作为字典中的键。这里也没有任何索引可以使用,因为这是单个字段中的元数据。
我最终试图将它与 API 响应中的其他字段分组,这是我在收到响应后的代码:
json_package = []
for row in json_keys:
SID = row['Id']
State = row['address']
**age = row['customFieldValues']**
a_key = 'value'
Handle = row['contacts']
list_values = [a_list[a_key] for a_list in Handle]
string = str(list_values).split(",")
data = {
'SID': SID,
'State': State['state'],
**'Age' : age,**
'Email': strip_characters(string[-1]),
}
json_package.append(data)
其中 strip characters 是我构建的一个函数,用于清理字段中的一些大括号、方括号和空格。
我尝试过for循环,创建函数来隔离,但不能完全根据API中的成员记录得到值。
其他一切都工作得很好,但我不能最后一件,所以任何帮助表示赞赏。
有什么建议么?
解决方案
推荐阅读
- python - IndentationError: unindent 不匹配任何外部缩进级别(我在此站点上发现的内容没有帮助)
- arrays - 有条件地选择逐列或逐行迭代
- azure - 数据在 Azure 时序见解中同时进入暖存储和冷存储
- amazon-web-services - 无法访问 ec2 内的 Web 服务器
- bootstrap-4 - Bootstrap 4.6中的负边距叠加
- c - 通过 C 中的宏减少函数参数的数量
- ssh-tunnel - 到 Web 服务器的 ssh 隧道不起作用 - 如何搜索问题?
- python - 在 Python 中读取音频文件的最快方法
- c - 当字符串在C中为“时间”时,如何打印当前时间?
- r - 从包含模型观察的数据框列表构建设计矩阵