首页 > 解决方案 > 嵌套 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-3.xfunctionapifor-loopnested

解决方案


推荐阅读