我正在尝试构建以下JSON:
{'Keys-1': [{'Key1': 'Value1'}, {'Key1': 'Value2'}]}
以下是我用来构建这个JSON的代码:
existingFile = {}
importobjs = []
importobj = {}
objkey = 'Key1'
objvalue = 'Value1'
importobj[objkey] = objvalue
importobjs.append(importobj)
objvalue = 'Value2'
importobj[objkey] = objvalue
importobjs.append(importobj)
existingFile['Keys-1'] = importobjs
几乎完美地工作,除了第一个键值对的值更新为'Value2'
{'Keys-1': [{'Key1': 'Value2'}, {'Key1': 'Value2'}]}
答案 0 :(得分:0)
代码的问题(如评论中所述)是对象是通过引用而不是通过值传递的。您的existingFile
实际上是什么样的
{'Keys-1': [object@importobj_address, object@importobj_address]}
因此,您的数组包含两个完全相同的对象。如果您再次更改importobj
并将其添加到importobjs
,那么您将在阵列中拥有3个完全相同的对象。
以下是如何正确实现此功能的示例:
existingFile = {}
importobjs = []
first_key = 'Key1'
importobjs.append({first_key:'Value1'})
importobjs.append({first_key:'Value2'})
existingFile['Keys-1'] = importobjs
扩展示例:
existingFile = {}
first_objs = []
first_key = 'Key1'
first_objs.append({first_key:'Value1'})
first_objs.append({first_key:'Value2'})
existingFile['Keys-1'] = first_objs
second_objs = []
second_key = 'Key2'
second_objs.append({second_key:'Value3'})
second_objs.append({second_key:'Value4'})
existingFile['Keys-2'] = second_objs
但是,通过循环遍历列表而不是每个字符串的变量,可以避免大部分问题。