在Python中使用json.load时,JSON文件将转换为字符串

时间:2018-06-10 06:20:53

标签: python json dictionary

我有一个有效的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))

它显示输出为class' str'。为什么它没有被转换成字典?

1 个答案:

答案 0 :(得分:0)

我已使用您提供的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版本中都有效。再次检查。