【问题标题】:Python: Parsing JSON data from API get - referring to the dictionary key?Python:从 API 获取解析 JSON 数据 - 指的是字典键?
【发布时间】:2019-09-09 11:13:55
【问题描述】:

我对 Python 还很陌生,所以我才刚刚开始使用 API。我已从 API 中检索到所需的数据,它以以下格式返回:

{u'id': u'000123', u'payload': u"{'account_title': u’sam b’, 'phone_num': ‘1234567890’, 'security_pin': u'000000', 'remote_word': u’secret123’, 'email_address': ‘email@gmail.com’, 'password': u’password123’}”}

所以当我打印我的变量时,它会返回上面的...

如果我只想要它返回的部分内容,我该如何写这个?我能够毫无问题地返回 id,如果我指定了“有效负载”,它会在此之后返回所有内容。似乎 account_title、phone_num、security_pin、remote_word、email_address 和 password 都嵌套在“payload”中

最好的方法是打印一个变量,例如只返回 email_address 吗?

谢谢!

【问题讨论】:

  • 您的问题不清楚。该 JSON 已被解析为 Python 字典。所以它就像任何其他字典一样工作。并且“有效负载”键本身包含另一个字典,就像普通字典一样工作。

标签: python json api curl


【解决方案1】:

欢迎来到 Python!听起来你正在进入它。最好开始阅读基础知识,特别是关于Dictionary Data Structure

字典或dict 是您在问题中引用的内容。它是一个通常[1] 无序的键值对存储。 dict 是表示 JSON 数据的好方法。

现在您要问的是如何从字典中提取信息。好吧,到目前为止,您似乎已经成功了!让我们用你的例子:

d = {u'id': u'000123', u'payload': u"{'account_title': u'sam b', 'phone_num': '1234567890', 'security_pin': u'000000' , 'remote_word': u'secret123', 'email_address': 'email@gmail.com', 'password': u'password123'}"}

现在如果我们写d['id'],我们将得到id(即000123)

如果我们写d['payload'],我们将在这个更大的字典得到字典。关于 dicts 很酷的部分,它们可以像这样嵌套!需要多少次都可以。

d['有效载荷']

"{'account_title': u'sam b', 'phone_num': '1234567890', 'security_pin': u'000000', 'remote_word': u'secret123', 'email_address': 'email@gmail. com', '密码': u'password123'}"

然后根据您的问题,如果您想接收电子邮件,它的语法相同,您只是嵌套访问器。像这样:

d['payload']['email_address']

希望有帮助!

  1. 很长一段时间以来,Python 中的字典都是无序的。在 3.6 及更高版本中,情况开始发生变化。 This answer 提供了非常详细的信息。否则,在此之前,使用collections.OrderedDict 是获取按插入顺序排序的字典的唯一方法

【讨论】:

  • 当我尝试像您的示例中那样相邻的 2 个方括号值时,我收到此错误 TypeError: string indices must be integers - 有什么想法吗?
  • @samrb 听起来您正在尝试访问像字典一样的列表。您确定您使用的数据与您在问题中提供的数据相同吗?
猜你喜欢
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 2021-12-25
  • 1970-01-01
  • 2016-05-09
相关资源
最近更新 更多