python - 在 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”。为什么它没有被转换为字典?
解决方案
我使用您提供的 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 版本中都有效。再检查一遍。
推荐阅读
- mysql - 按每个房间的最近聊天对聊天室进行排序的最佳方法是什么
- java - 使用打开的 localhost 连接到 Java 服务器不起作用
- spring-boot - @Timed 注释不适用于请求范围的 bean?
- php - PHP 检查 assoc 数组的键,如果存在,将值提高 1
- wordpress-gutenberg - Wordpress Gutenberg - 嵌套子元素
- c++ - 这是什么意思:“成员引用类型'Human *'是一个指针;你的意思是使用'->'吗?”
- html - 如果有查询字符串,锚链接会在新窗口中打开,这可以防止吗?
- node.js - 直接使用节点模块和创建节点模块的对象然后使用它有什么区别?
- ios - 使用 Cocoapods 一个针对多个平台
- c++ - 编写一个函数来检查一个数字是否是一个带有递归函数的正方形