【问题标题】:Assign Json string to a single key将 Json 字符串分配给单个键
【发布时间】:2019-11-29 06:55:40
【问题描述】:

下面是我的 python 代码,它从文件中读取数据并转换为 JSON

json_data = {}

data ={}

with open("json_content.txt","r") as fp:

    for line in fp.readlines():
     if line != '\n':
       line=line.strip()
       split_data = line.split(':',)
       json_data[split_data[0].strip()] = split_data[1].split('\n')[0].strip()
       data['description']=json_data
      elif line == '\n':
       print(data)

我的 python 代码给了我如下输出

{'description': {'mount_disk': '/data', 'actual_size': '2.5T', 'fsystem': '/dev/sdb'}}
{'description': {'mount_disk': '/data', 'actual_size': '1.5T', 'fsystem': '/dev/sdb'}}
{'description': {'mount_disk': '/data', 'actual_size': '3.5T', 'fsystem': '/dev/sdb'}}

但我正在寻找如下输出

{'description': 

    { 'mount_disk': '/data', 'actual_size': '2.5T', 'fsystem': '/dev/sdb'}
    { 'mount_disk': '/data', 'actual_size': '1.5T', 'fsystem': '/dev/sdb'}
    { 'mount_disk': '/data', 'actual_size': '3.5T', 'fsystem': '/dev/sdb'}
}

我怎样才能得到如上的预期输出?

【问题讨论】:

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


    【解决方案1】:

    您不能在不使用数组的情况下将多个对象添加到单个键。您的目标 JSON 结构必须如下所示:

    {
      "description": [
        {"mount_disk": "/data", "actual_size": "2.5T", "fsystem": "/dev/sdb"},
        {"mount_disk": "/data", "actual_size": "2.5T", "fsystem": "/dev/sdb"},
        ...
      ]
    }
    

    因此,您在 python 中的 data 对象应该包含一个带有键 description 的列表,您将在其中添加每个对象:

    json_data = {}
    data = {"description": []}
    
    with open("json_content.txt","r") as fp:
        for line in fp.readlines():
            if line != '\n':
                line=line.strip()
                split_data = line.split(':',)
                json_data[split_data[0].strip()] = split_data[1].split('\n')[0].strip()
                data['description'].append(json_data)
             elif line == '\n':
                print(data)
    

    【讨论】:

    • 感谢您的支持。从您的代码中,输出似乎是键描述的重复值,并为我提供了 3 组描述输出。
    猜你喜欢
    • 2019-04-02
    • 2013-06-08
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 2018-08-03
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多