我试图使用python从json文件中获取信息。我已经看到很多线程简要介绍了这一点,但是我有一些问题,我在这里没有看到答案。
我们说我有以下json文件:
{
"href" : "http://www.google.com",
"Hosts" : {
"cluster_name" : "MyCluster",
"cpu_count" : 4,
"disk_info" : [
{
"available" : "78473288",
"used" : "15260444",
},
{
"available" : "4026904",
"used" : "8",
},
{
"available" : "110454",
"used" : "73547",
}
]
}
}
我知道我可以使用以下代码:
import json
#Store JSON data into json_file
json_data = json.loads(json_file)
print json_data["Hosts"]
此代码的输出将为我提供主机中的所有内容:
"cluster_name" : "MyCluster",
"cpu_count" : 4,
"disk_info" : [
{
"available" : "78473288",
"used" : "15260444",
},
{
"available" : "4026904",
"used" : "8",
},
{
"available" : "110454",
"used" : "73547",
}
]
但是,如何从这个json文件中的特定行中获取特定值,这些行中嵌入了多行数据?
例如,如果我想获得" cpu_count"的值,该怎么办?来自"主持人"? 或者对于一个更加困难的例子,我如何得到第二个"可用"这是在" disk_info"内部"主持人"?
我更感兴趣的是找到一种方法来获取json文件中的特定值,而不是整个数据列表。
任何帮助表示赞赏,如果已经有一个实际上涵盖这个的主题,请指出。谢谢!
答案 0 :(得分:1)
Json.loads也将解码该字典。因此,要访问cpu_count
,例如它将是json_data["Hosts"]["cpu_count"]
。
json库会将所有内容转换为标准python数据类型(dict,list,int,str)或从这些数据类型转换为json可读格式。您还可以定义一个解析器,从一个类解析为json。
答案 1 :(得分:0)
如果你明白自己可以做json_data["Hosts"]
,那么是什么阻止你采取同样的原则?
json_data["Hosts"]["cpu_count"]
json_data["Hosts"]["disk_info"][1]["available"]
等等。
请注意,这与JSON完全没有任何关系:这是一个完全正常的Python数据结构,由dicts和list组成。