Вы добавляете один и тот же объект в список несколько раз.Если вы заметили, шаблон изменяется:
import json
template = {
"field1": 1,
"field2": "two"
}
json_list = list()
def create_json_list(json_template):
newVar = json_template
newVar['name'] = "unique_name"
json_list.append(newVar)
newVar = json_template
newVar['name'] = 'another_unique_name'
json_list.append(newVar)
print(json.dumps(json_template, indent=4))
create_json_list(template)
Вывод
{
"field2": "two",
"field1": 1,
"name": "another_unique_name"
}
Вам необходимо создать новый шаблон для каждой записи:
newVar = dict(json_template)
Из документации :
Assignment statements in Python do not copy objects, they create
bindings between a target and an object.
Если вы хотите скопировать объект, вам нужно сообщить об этом Python.В случае dict
вы можете просто использовать конструктор, как показано выше.
Для объекта zeep
вы должны иметь возможность использовать factory :
factory = client.type_factory('ns0')
newVar = factory.JsonTemplate({"field1": 1, "field2": "two"})