首页 > 解决方案 > 如何从 JSON 数组中读取数据

问题描述

我想从 JSON 数组中读取数据并将它们放入变量中。对我有用的唯一方法是将}, {with}[and替换]为什么都没有,并且像普通的 json 文件一样读取它。我怎样才能做到这一点?这是 Json 文件

    {
  "Area": "Hyper-V Cluster",
  "time_start": "2020-03-07T00:00:00",
  "time_end": "2020-03-07T23:59:59",
  "Systeme": [
    {
      "name": "test-s-hc001",
      "CPU [%]": 20.86,
      "Disk [%]": 4.32
    },
    {
      "name": "test-s-hc002",
      "CPU  [%]": 21.23,
      "Disk [%]": 49.42
    },
    {
      "name": "test-s-hc003",
      "CPU  [%]": 19.8,
      "Disk [%]": 7.47
    },
    {
      "name": "test-s-hc004",
      "CPU [%]": 20.01,
      "Disk [%]": 49.49
    },
    {
      "name": "test-s-hc005",
      "CPU [%]": 21.1,
      "Disk [%]": 48.41
    },
    {
      "name": "test-s-hc006",
      "CPU [%]": 21.01,
      "Disk [%]": 53.71
    },
    {
      "name": "test-s-hc007",
      "CPU [%]": 3.75,
      "Disk [%]": 62.72
    },
    {
      "name": "test-s-hc009",
      "CPU [%]": 4.11,
      "Disk [%]": 59.66
    }
  ]
}

我实际尝试但不起作用的代码如下所示:

import json

input_file = open ('test.json')
json_array = json.load(input_file)
windows_list = []

for item in json_array:
    windows_details = {"name":None, "Cpu [%]":None, "Disk [%]":None}
    windows_details['name'] = item['name']
    windows_details['CPU [%]'] = item['CPU [%]']
    windows_details['Disk[%]'] = item['Disk']
    windows_list.append(windows_details)

print(windows_list)

输出应如下所示

test-s-hc001
20.86
4.32
test-s-hc002

...

标签: pythonarrays

解决方案


你在 json 结构中json_array被调用Systeme,而不是顶部元素。

所以你应该使用它:

import json

input_file = open ('test.json')
json_array = json.load(input_file)
windows_list = []

for item in json_array['Systeme']:
    windows_details = {"name":None, "CPU [%]":None, "Disk [%]":None}
    windows_details['name'] = item['name']
    windows_details['CPU [%]'] = item['CPU [%]']
    windows_details['Disk [%]'] = item['Disk [%]']
    windows_list.append(windows_details)

print(windows_list)

推荐阅读