Python3更新&;写入JSON值
我刚开始编写Python,遇到了一些障碍。我试图向下面的示例json文件添加新信息Python3更新&;写入JSON值,python,json,python-3.x,Python,Json,Python 3.x,我刚开始编写Python,遇到了一些障碍。我试图向下面的示例json文件添加新信息 { "data1": { "info1": [ { "keyA1": "valueA1", "keyA2": "valueA2" }, { "keyB1": "valueB1", "KeyB2": "valueB2" } ], "info2": { "keyA
{
"data1": {
"info1": [
{
"keyA1": "valueA1",
"keyA2": "valueA2"
},
{
"keyB1": "valueB1",
"KeyB2": "valueB2"
}
],
"info2": {
"keyA1": "valueA1",
"keyA2": "valueA2"
}
}
}
我用以下内容收集了json文件:
myData=json.load(打开('cool.json',encoding='utf-8'))
现在我有了我可以充分利用的数据。然而,当涉及到更新时,有三种情况我无法正常工作。我需要能够:
“info2”:[
vs“info2”:{
)并添加另一个数组
键B1类似于info1中的内容myData
转储回一个文件来编写它,我已经开始工作。我知道我的新特性正在显现,这可能是我刚刚错过的一些简单的东西。我熟悉myData.update(newData)
,但无法找到数组和新的部分。任何帮助都将不胜感激
目前,我有:
def dataAdd(value1, value2, dataSet, infoSet):
if dataSet in myData.keys():
newEntry = {"keyA1": value1, "keyA2": value2}
myData[dataSet].update({infoSet:newEntry})
with open('cool.json', "w") as jsonFile:
json.dump(myData, jsonFile)
目前,上述代码将按预期添加,但会覆盖现有密钥。这就是为什么我在添加第二组密钥时尝试转换为数组。我认为您正在执行以下操作:
new_data = myData.update(...)
.update()
函数返回None
,因此您应该
myData.update(...)
然后,您已经更新了myData,可以开始编写了。以下是您要做的: 导入json >>>#pprint只是为了获得漂亮的打印输出 >>>从pprint导入pprint >>>json_text='' ... { …“数据1”:{ …“信息1”:[ ... { …“keyA1”:“valueA1”, …“keyA2”:“valueA2” ... }, ... { …“keyB1”:“valueB1”, …“KeyB2”:“valueB2” ... } ... ], …“信息2”:{ …“keyA1”:“valueA1”, …“keyA2”:“valueA2” ... } ... } ... } ... ''' >>> >>>myData=json.load(json_文本) >>>pprint(myData) {'data1':{'info1':[{'keyA1':'valueA1','keyA2':'valueA2'}, {'KeyB2':'valueB2','keyB1':'valueB1'}], 'info2':{'keyA1':'valueA1','keyA2':'valueA2'}} >>> >>>#转换为词典列表 >>>myData['data1']['info2']=[myData['data1']['info2']] >>>#添加新节 >>>myData['data2']={} >>>#打印最终结果 >>>pprint(myData) {'data1':{'info1':[{'keyA1':'valueA1','keyA2':'valueA2'}, {'KeyB2':'valueB2','keyB1':'valueB1'}], 'info2':[{'keyA1':'valueA1','keyA2':'valueA2'}], 'data2':{} >>> >>>#只是忘了添加您在问题中提到的新钥匙 >>myData['data1']['info2'].append({'keyB1':'valueB1','keyB2':'valueB2'}) >>>pprint(myData['data1']['info2']) [{'keyA1':'valueA1','keyA2':'valueA2'}, {'keyB1':'valueB1','keyB2':'valueB2'}] >>> >>>pprint(myData) {'data1':{'info1':[{'keyA1':'valueA1','keyA2':'valueA2'}, {'KeyB2':'valueB2','keyB1':'valueB1'}], 'info2':[{'keyA1':'valueA1','keyA2':'valueA2'}, {'keyB1':'valueB1','keyB2':'valueB2'}]}, 'data2':{}
希望能有帮助。关于你的第一个问题-
myData['data1']['info2'] = [myData['data1']['info2']]
第二,它类似于向dict()添加新键的方式。请显示您的代码。您是否尝试过
myData['data1']['info2']=[dict(myData['data1']['info2']]]
和data2
new sectionmyData['data2']={}
?我将对此进行一次运行并检查。运行良好。非常感谢……您的帮助和耐心。不用担心。我很高兴它按照您的预期运行。