【问题标题】:How to assign Json output to a Key variable如何将 Json 输出分配给 Key 变量
【发布时间】:2019-11-25 12:52:17
【问题描述】:

下面是我的 json 输出数据。

{'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge1', 'fsystem': '/dev/sdb', 'used_disk': '486G', ' avail_disk': '1.9T', 'percentage': '21%'} {'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge4', 'fsystem': '/ dev/sdb', 'used_disk': '533G', 'avail_disk': '1.8T', 'percentage': '23%'} {'mount_disk': '/data', 'actual_size': '2.5T', '主机名':'edge5','fsystem':'/dev/sdb','used_disk':'664G','avail_disk':'1.7T','百分比':'29%'}

我想将整个输出分配给一个键。它应该看起来像

{'description': {'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge1', 'fsystem': '/dev/sdb', 'used_disk': '486G', 'avail_disk': '1.9T', '百分比': '21%'} {'mount_disk': '/data', 'actual_size': '2.5T', '主机名': 'edge4', ' fsystem': '/dev/sdb', 'used_disk': '533G', 'avail_disk': '1.8T', 'percentage': '23%'} {'mount_disk': '/data', 'actual_size': '2.5T','主机名':'edge5','fsystem':'/dev/sdb','used_disk':'664G','avail_disk':'1.7T','百分比':'29%'} }

description 是一个应该保存整个值的键。我怎样才能做到这一点?我尝试了很多方法,但都达不到预期。

【问题讨论】:

  • 首先,您的 json 输出不是有效的 json 格式。输出是json数组还是长字符串?
  • @Feng Hao,它是我从文件中读取并转换为 json 的字符串。以下是将字符串转换为 json json_data = {} 的代码,其中 open("json_content.txt","r") as fp: for line in fp.readlines(): if line != "\n": split_data = line .split(':',) print(split_data) json_data[split_data[0]] = split_data[1].split('\n')[0] print(json_data)

标签: json python-3.x python-2.7


【解决方案1】:

只要做:

json = {'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge1', 
        'fsystem': '/dev/sdb', 'used_disk': '486G', 'avail_disk': '1.9T',
        'percentage': '21%'} {'mount_disk': '/data', 'actual_size': '2.5T', 
        'hostname': 'edge4', 'fsystem': '/dev/sdb', 'used_disk': '533G',
        'avail_disk': '1.8T', 'percentage': '23%'} {'mount_disk': '/data', 
        'actual_size': '2.5T', 'hostname': 'edge5', 'fsystem': '/dev/sdb', 
        'used_disk': '664G', 'avail_disk': '1.7T', 'percentage': '29%'}

result = {'description' : json}

输出:

{'description' : 
    {
     'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge1', 
     'fsystem': '/dev/sdb', 'used_disk': '486G', 'avail_disk': '1.9T',
     'percentage': '21%'} {'mount_disk': '/data', 'actual_size': '2.5T', 
     'hostname': 'edge4', 'fsystem': '/dev/sdb', 'used_disk': '533G',
     'avail_disk': '1.8T', 'percentage': '23%'} {'mount_disk': '/data', 
     'actual_size': '2.5T', 'hostname': 'edge5', 'fsystem': '/dev/sdb', 
     'used_disk': '664G', 'avail_disk': '1.7T', 'percentage': '29%'
    }
}

不过,我猜你的 json 输出数据格式不正确。

【讨论】:

    【解决方案2】:

    您的代码没有格式,因此很难理解。根据我的猜测,有一个文本文件逐行包含 json 字符串,所以这段代码可以完成这项工作。

    import json
    json_data = {'description': []} 
    with open("json_content.txt","r") as fp: 
        for line in fp.readlines(): 
            if line != "\n":
                json_data['description'].append(json.loads(line))
    print(json_data)
    

    输出将是

    {'description': [{'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge1', 'fsystem': '/dev/sdb', 'used_disk': '486G', 'avail_disk': '1.9T', 'percentage': '21%'}, {'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge4', 'fsystem': '/dev/sdb', 'used_disk': '533G', 'avail_disk': '1.8T', 'percentage': '23%'}, {'mount_disk': '/data', 'actual_size': '2.5T', 'hostname': 'edge5', 'fsystem': '/dev/sdb', 'used_disk': '664G', 'avail_disk': '1.7T', 'percentage': '29%'}]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 2011-01-28
      • 1970-01-01
      • 2017-09-28
      • 2012-12-12
      • 2018-05-18
      • 1970-01-01
      相关资源
      最近更新 更多