【问题标题】:Extract value from uncorrectly parsed dict from json output从 json 输出中未正确解析的 dict 中提取值
【发布时间】:2019-08-06 07:21:58
【问题描述】:

我正在 python 烧瓶服务器中处理 kafka 流。我用 json 读取响应,需要从流中提取 udid 值。我用 request.json 读取每个响应并将其保存在字典中。当我尝试解析它失败。 dict 包含以下值

dict_items([('data', {'SDKVersion': '7.1.2', 'appVersion': '6.5.5', 'dateTime': '2019-08-05 15:01:28+0200', 'device': 'iPhone', 'id': '3971',....})])

以正常方式解析字典不起作用,即 event_data['status'] 给出错误。也许是因为它不是纯字典......?

@app.route('/data/idApp/5710/event/start', methods=['POST'])
def give_greeting():
    print("Hola")
    event_data = request.json
    print(event_data.items())
    print(event_data['status'])
    #print(event_data['udid'])
    #print(event_data['Additional'])
    return 'Hello, {0}!'.format(event_data)

事件数据中包含的值如下

dict_items([('data', {'SDKVersion': '7.1.2', 'appVersion': '6.5.5', 'dateTime': '2019-08-05 15:01:28+0200', 'device': 'iPhone', 'id': '3971',....})])

预期的结果就是这个结果

print(event_data['status'])->start
print(event_data['udid'])->BAEB347B-9110-4CC8-BF99-FA4039C4599B
print(event_data['SDKVersion'])->7.1.2
etc

的输出 print(event_data.keys()) 是 dict_keys(['data'])

【问题讨论】:

  • print(event_data.keys()) 的输出是什么? (请将其添加到问题中,不要将其作为评论发布)
  • 解析没有问题,您正在对打印输出不支持的数据结构做出假设。
  • 所以要从显示的字典中提取 udid、status 等,有什么可能的方法?

标签: python json dictionary parsing flask


【解决方案1】:

您期望的数据包含在一个额外的data 属性中。 您只需执行一个额外步骤即可访问此数据。

data_dict = request.json
event_data = data_dict['data']

现在您应该可以使用

访问所需的信息了
event_data['SDKVersion']
...

如上所述。

正如@jonrsharpe 所说,这不是解析的问题。解析要么失败要么成功,但你永远不会从解析 JSON 中得到一个“损坏”的对象(无论是 dict、list 等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多