解析python中的JSON文件以获取特定值

时间:2015-06-17 17:19:05

标签: python json parsing

我试图使用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文件中的特定值,而不是整个数据列表。

任何帮助表示赞赏,如果已经有一个实际上涵盖这个的主题,请指出。谢谢!

2 个答案:

答案 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组成。