首页 > 解决方案 > 在 Python 中使用 json.load 时将 JSON 文件转换为字符串

问题描述

我有一个有效的 JSON 文件,但是当我使用 json.load() 时,它被转换为字符串而不是 Python 字典。

我的 JSON 字符串:

{
  "colors": [
    {
      "color": "black",
      "category": "hue",
      "type": "primary",
      "code": {
        "rgba": [255,255,255,1],
        "hex": "#000"
      }
    },
    {
      "color": "white",
      "category": "value",
      "code": {
        "rgba": [0,0,0,1],
        "hex": "#FFF"
      }
    },
    {
      "color": "red",
      "category": "hue",
      "type": "primary",
      "code": {
        "rgba": [255,0,0,1],
        "hex": "#FF0"
      }
    },
    {
      "color": "blue",
      "category": "hue",
      "type": "primary",
      "code": {
        "rgba": [0,0,255,1],
        "hex": "#00F"
      }
    },
    {
      "color": "yellow",
      "category": "hue",
      "type": "primary",
      "code": {
        "rgba": [255,255,0,1],
        "hex": "#FF0"
      }
    },
    {
      "color": "green",
      "category": "hue",
      "type": "secondary",
      "code": {
        "rgba": [0,255,0,1],
        "hex": "#0F0"
      }
    }
  ]
}

它被命名为color.json

我的 Python 代码是:

import json
with open("color.json") as f:
    data=json.load(f)
print(type(data))

它将输出显示为类“str”。为什么它没有被转换为字典?

标签: pythonjsondictionary

解决方案


我使用您提供的 json 文件扩展了您的代码,如下所示

import json
with open("color.json") as f:
    data=json.load(f)
print(type(data))

listofkeys=[keys for keys in data.keys()]
print(listofkeys)

color_keys=[keys2 for keys2 in data["colors"][0].keys()]
print(color_keys)

输出如下

<class 'dict'>
['colors']
['category', 'color', 'code', 'type']

首先是它只返回dict类型。colors正如我们打印出来的那样,它只有一个键。

第二件事是这个颜色键将字典列表作为它的值,这些值也印在我们的代码中。category color code type是四个字典

您可以进一步探索这些词典。

并且上面提到的代码在 python2 和 3 版本中都有效。再检查一遍。


推荐阅读