Оптика Circe не предоставляет функции рекурсивной модификации из коробки.Однако вы можете сделать одно:
import io.circe.optics.JsonPath._
val modifyModel: Json => Json = root.model.string.modify("AAAA-" + _)
def modifyAllModels(value: Json): Json =
root.each.json.modify(modifyAllModels)(modifyModel(value))
Модификация будет применена ко всем ключам, а не только к test
- если вы этого не хотите, поменяйте each
на test
на modifyAllModels
.