Сценарий таков:
У меня огромная переменная JSON в Python. Это JSON описывает модель или диаграмму (BPMN, EPK, организационная диаграмма и т. Д. c). Это действительно большие, например, 3000 строк и более. Это выглядит примерно так:
model_json =
{
modelId: 239475,
type: BPMN,
# some other diagram information,
childShapes: [
{
stencil: Pool,
title: Company XY,
positionData: { some stuff },
...
childShapes: [
{
stencil: Lane,
title: Engineering,
attributes: {
head: Peter,
costCenter: T534
},
childShapes: [
{
stencil: Task,
title: Review Code,
attributes: {
executive: Mark
},
},
{
stencil: Task,
title: Push New Commit,
attributes: {
executive: Michael
},
},
...
]
},
...
]
},
...
]
...
}
Как правило, атрибуты определенных форм одинаковы для всех элементов. Они централизованы, поэтому, если я определю атрибут duration
на stencil: Task
, каждая форма задачи будет иметь этот атрибут в JSON со значением или без него.
Чего я пытаюсь достичь:
Мне нужно выполнить массовое изменение, например, всех форм заданий, где я должен изменить атрибут executive
на что-то другое. Ребята, вы знаете хороший способ сделать это в Python без создания бесконечных циклов и получения каждого атрибута по его полному пути JSON, например model_json['childShapes'][i]['childShapes'][e]['childShapes'][k]['attributes']['executive'] = Tim
? Я спрашиваю об этом, потому что мне нужно это JSON, чтобы потом зафиксировать изменения на самой диаграмме, поэтому в лучшем случае: структура исходной JSON сохраняется в течение всей процедуры, и у меня есть JSON, который выглядит именно так один выше, но только атрибут executive
изменился.
Добавление:
Эта массовая операция может быть выполнена с этим отвратительным методом прохождения JSON с использованием всего пути, но для этого существует гораздо больше вариантов использования, поэтому для каждой операции потребуются свои собственные настраиваемые вложенные циклы и пути для работы.