【问题标题】:json.loads function not giving python dictionaryjson.loads 函数没有给出 python 字典
【发布时间】:2019-10-29 08:42:56
【问题描述】:

我正在尝试将下面提到的 json 字符串转换为 python 字典。我正在使用 python 3 的 json 包。这是我正在使用的代码:

a = "[{'id': 35, 'name': 'Comedy'}, {'id': 18, 'name': 'Drama'}, {'id': 10751, 'name': 'Family'}, {'id': 10749, 'name': 'Romance'}]"
b = json.loads(json.dumps(a))
print(type(b))

我从上面的代码得到的输出是:

我在 stackoverflow 中看到了类似的问题,但针对这些问题提供的解决方案不适用于我的案例。

【问题讨论】:

  • json.dumps(a) 用另一组双引号将其封装起来,因此当您尝试loads 时,您会得到一个字符串。
  • 顺便说一句,AFAIK json.dumps 被指定接受一个对象(dict)并将其转换为字符串,所以我看不出以字符串开头的调用它的意义。跨度>
  • 另外,为了让字符串正确表示 JSON 对象,每个键必须用双引号而不是单引号封装。因此,您的输入字符串甚至不是有效的 JSON 表示形式。

标签: json python-3.x dictionary


【解决方案1】:

您尝试转换的 json 字符串格式不正确。此外,您只需调用 json.loads 即可将字符串转换为dictlist

更新后的代码如下所示:

import json
a = '[{"id": 35, "name": "Comedy"}, {"id": 18, "name": "Drama"}, {"id": 10751, "name": "Family"}, {"id": 10749, "name": "Romance"}]'
b = json.loads(a)
print(type(b))

希望这能解释为什么您没有得到预期的结果。

【讨论】:

    【解决方案2】:

    JSON 数组 包含在 [ ] 中,而 JSON 对象 包含在 { }

    a 中的字符串是一个 json 数组,因此您只能将其更改为 list

    你的key和value要用双引号括起来,这是使用python的json库的要求。

    b = json.loads(a) 将给出一个字典对象列表。

    要获得更多字典,您需要将一个键与每个单独的字典相关联。

    d = dict()
    ind = 0
    for data in b:
        d[ind] = data
        ind+=1
    

    现在你得到的输出将是
    {0: {'id': 35, 'name': 'Comedy'}, 1: {'id': 18, 'name': 'Drama'}, 2: {'id': 10751, 'name': 'Family'}, 3: {'id': 10749, 'name': 'Romance'}}

    这是字典的字典。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多