【问题标题】:Read a JSON file and append JSON objects to a JSON Array读取 JSON 文件并将 JSON 对象附加到 JSON 数组
【发布时间】:2020-01-20 10:41:01
【问题描述】:

我有一个包含以下内容的 JSON 文件 name.json,

{
    "Name": [{
        "firstName": "John",
        "lastName": "Stark"
    }]
}

使用 python 如何使用以下列表将 Stark 家族的成员添加到 JSON 文件 firstNameList=['Sansa','Arya','Brandon']

预期输出

{
    "Name": [{
            "firstName": "John",
            "lastName": "Stark"
        },
        {
            "firstName": "Sansa",
            "lastName": "Stark"
        },
        {
            "firstName": "Arya",
            "lastName": "Stark"
        },
        {
            "firstName": "Brandon",
            "lastName": "Stark"
        }
    ]
}   

我试过了:

firstNameList=['arya', 'sansa','brandon']
import json
with open('/name.json', 'r+') as f:
    data = json.load(f)
    for item in firstNameList:
        Name['firstname']=item  
    f.seek(0)        #reset file position to the beginning.
    json.dump(data, f, indent=4)
    f.truncate()

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我的方法无效,但尝试了以下方法:``` firstNameList=['arya', 'sansa','brandon'] import json with open('/test1.json', 'r+') as f: data = json.load(f) for item in firstNameList: Name['firstname']=item f.seek(0) #reset file position to the beginning。 json.dump(data, f, indent=4) f.truncate() ```
  • 不要在 cmets 中发布您的代码尝试,而是编辑问题。

标签: python json file-handling


【解决方案1】:

以下应该可以解决问题:

import json 


with open('name.json', 'r+') as f:
    data = json.load(f)

    for name in firstNameList:
        data["Name"].append({"firstName": name, "lastName": "Stark"})

【讨论】:

  • @Giorgos Myrianthous ,我尝试了建议的方法,但没有给出预期的结果。请检查。我只想在 cmets 中添加结果但不能这样做,因此编辑您的答案,谢谢!!
  • 得知我们使用了 f.seek(0)
【解决方案2】:

你可以试试这个:

import json
test = '''{
    "Name": [{
        "firstName": "John",
        "lastName": "Stark"
    }]
}'''
data  = json.loads(test)
firstNameList = ['Sansa','Arya','Brandon']
for member in firstNameList:
    test_dict = {'firstName': member, 'lastName': 'Stark'}
    data['Name'].append(test_dict)
dump = json.dumps(data)
print(dump)

这使用 json 库解析成字典,进行更改并转储回 json。
输出

{"Name": [{"firstName": "John", "lastName": "Stark"}, {"firstName": "Sansa", "lastName": "Stark"}, {"firstName": "Arya", "lastName": "Stark"}, {"firstName": "Brandon", "lastName": "Stark"}]}

【讨论】:

    【解决方案3】:
    dicts = {
        "Name": [{
                "firstName": "John",
                "lastName": "Stark"
            }
        ]
    }
    
    firstNameList = ['Sansa','Arya','Brandon']
    
    
    for j in firstNameList:
        dicts["Name"].append({'firstName': j, 'lastName': 'Stark'})
    
    print(dicts)
    
    

    你会得到

    {'Name': [{'firstName': 'John', 'lastName': 'Stark'}, {'firstName': 'Sansa', 'lastName': 'Stark'}, {'firstName': 'Arya', 'lastName': 'Stark'}, {'firstName': 'Brandon', 'lastName': 'Stark'}]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2018-05-21
      • 1970-01-01
      • 2020-12-03
      • 2021-06-23
      相关资源
      最近更新 更多