У меня есть динамически созданная структура данных карты, которая позже будет разобрана в JSON. Поэтому уровни вложенности и т. Д. Неизвестны и зависят от данных.Clojure: поиск/замена значений в динамической вложенной карте/seq
Если ключ имеет несколько значений, они представляются в виде карт внутри последовательности.
Вот пример:
{:key "value"
:anotherKey "anotherValue"
:foo "test"
:others [ {:foo "test2"} {:foo "test3"} ]
:deeper {:nesting {:foo "test4"} }
}
теперь я хочу, чтобы искать ключ :foo
и добавьте "/bar"
к значению.
Результат должен вернуть модифицированную карту:
{:key "value"
:anotherKey "anotherValue"
:foo "test/bar"
:others [ {:foo "test2/bar"} {:foo "test3/bar"} ]
:deeper {:nesting {:foo "test4/bar"} }
}
Что бы чистый и простой способ для достижения этой цели?
Я пробовал рекурсивный подход, но помимо проблемы с памятью больших структур данных я борюсь с возвратом моих добавленных значений.
Какой результат для вас ожидать? Значение для * каждого * ': foo', добавленного или только первого уровня? – Thumbnail
спасибо, я отредактировал вопрос в соответствии: результатом должна быть измененная карта. – echox
Пожалуйста, покажите нам * измененную карту *. – Thumbnail