JsonMerge распространяет новый элемент на все элементы массивовPython

Программы на Python
Anonymous
JsonMerge распространяет новый элемент на все элементы массивов

Сообщение Anonymous »

У меня есть главный «шаблон» JSON, который пользователи экспортируют и заполняют значениями.
Они также могут добавлять (дублировать/обновлять) объекты в любое количество массивов.
Теперь мне нужно добавить новый элемент ко всем объектам в определенном массиве, поэтому мне нужно «вставить» это измененное определение объекта во все пользовательские копии.
Я пытаюсь сделать это с помощью библиотеку jsonmerge, но изо всех сил пытаюсь понять документацию, чтобы сделать то, что мне нужно.
Ниже пользовательские данные находятся в формате «data» json, и каждый объект в разделе «Цветок» имеет свойства « Размер» и «Цвет»
Мой мастер («mstr») теперь обновлен и добавлено третье свойство «xtra».
Мне нужно, чтобы это «xtra» отображалось в все "Цветы" пользователя
Однако, независимо от того, какую стратегию слияния я использую - кажется, что все элементы/объекты цветов помещаются в один массив, но не обновляются их содержимое с новым атрибутом.
Я неправильно понимаю, что такое функция библиотеки, или я просто неправильно ее использую?
Если кто-нибудь может прояснить ситуацию, буду благодарен!
Спасибо

Код: Выделить всё

import json
from jsonmerge import Merger

schema = {
"properties":{
"tree":{
"type":"array",
"mergeStrategy": "append"
}
},
"additionalProperties":False
}

mstr = {
"tree": [
{
"Name": "",
"Bud": {
"Flower": [
{
"Size": "",
"Colour": "",
"xtra":""
}
]
}
}
]
}

data = {
"tree": [
{
"Name": "",
"Bud": {
"Flower": [
{
"Size": "green",
"Colour": ""
},
{
"Size": "red",
"Colour": ""
}
]
}
}
]
}

merger = Merger(schema)
result = merger.merge(data,mstr)
print(result)
Результат

Код: Выделить всё

{
"tree": [
{
"Name": "",
"Bud": {
"Flower": [
{
"Size": "",
"Colour": "",
"xtra": ""
}
]
}
},
{
"Name": "",
"Bud": {
"Flower": [
{
"Size": "green",
"Colour": ""
},
{
"Size": "red",
"Colour": ""
}
]
}
}
]
}
Обновите схему JSON документа, используя определение основной схемы

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-arrays

Вернуться в «Python»