我有下面的JSON嵌套字典.如果我想获得"id"、"self"、"name",我应该如何使用Python程序解析它.

{
  "items": [
    {
      "id": "12345",
      "links": {
        "self": "https://www.google.com"
      },
      "name": "beast",
      "type": "Device"
    }
  ],
  "links": {
    "self": "https://www.google.com"
  },
  "paging": {
    "count": 1,
    "limit": 1,
    "offset": 0,
    "pages": 1
  }
}

推荐答案

要理解json是如何设置的,更容易对其进行分解.让我们看看第一个字典的键,并删除这些值.

json = {"items": [], "links": {}}

你有一本有两个键和两个值的字典.您要查找的所有三个变量(id、self、name)都在第一个键"items"中.让我们深入一点.

json["items"] = [{'links': {'self': 'https://www.google.com'}, 'name': 'beast', 'type': 'Device', 'id': '12345'}]

现在,您有了一个列表,其中包含一个字典以及您要查找的值,因此让我们输入包含下一个字典的列表的第一个也是唯一的值.

json["items"][0] = {'links': {'self': 'https://www.google.com'}, 'id': '12345', 'type': 'Device', 'name': 'beast'}

最后,我们有一个字典,里面有你要查找的值,所以你可以用这段代码来查找name和id.

json["items"][0]["name"] = beast

json["items"][0]["id"] = 12345

self变量隐藏得更深一层,因此我们必须深入研究links键.

json["items"][0]["links"]["self"] = http://google.com

现在你有了所有的值,你只需要按照所有的列表和字典来获得你想要的值.

Python-3.x相关问答推荐

Gekko优化超出了方程式的界限(由于某种原因,会产生变量)

TypeError:&Quot;Value&Quot;参数必须是标量、Dict或Series,但您传递了&Quot;Index&Quot;

丢弃重复的索引,并在多索引数据帧中保留一个

在Pandas 数据帧中为小于5位的邮政编码添加前导零

无法导入名称';核心';来自部分初始化的模块';tensorflow_datasets';(很可能是由于循环导入)

在 Python 中比较和排序列之间的值(带有不匹配列)

PyTest:尽管明确运行了测试,但是被标记为没有运行测试

通过在不重新索引的情况下采用最高概率的百分比,有效地转换 0/1 列表中的概率列表

三重奏:为什么频道被记录为使用async with,而不是with?

asyncio.as_completed() 应该接受 `Iterable`,但如果输入是 `Generator` 就会崩溃?

如果网站加载时间过长,如何强制 Selenium 刷新

将元组列表转换为以整个元组为键的字典列表

Python BeautifulSoup:在 Select 语句中排除其他标签

Python 解包运算符 (*)

为什么 virtualenv 会有效地禁用 Python 3 制表符补全?

PIL 在图像上绘制半透明方形覆盖

在 Ubuntu 上为 Python3 安装 mod_wsgi

无论如何我可以在 Google colaboratory 中下载文件吗?

带有自定义标头的 urllib.urlretrieve

使用 Python 3 读取 CSV 文件