Если вам нужен причудливый стиль JsonPath
, вы можете использовать each
, чтобы выбрать каждый соответствующий элемент массива JSON, чтобы ваш путь мог выглядеть следующим образом:
import io.circe.optics.JsonPath
val entities = JsonPath.root.each.each.entity.each.string
А затем предположим, что выиметь следующее Json
значение:
import io.circe.jawn.parse
val Right(json) = parse("""[["a",{"entity":["foo"]}],["b",{"entity":["bar"]}]]""")
Вы можете использовать путь Traversal
следующим образом:
scala> entities.getAll(json)
res0: List[String] = List(foo, bar)
scala> entities.modify(_ * 2)(json).noSpaces
res1: String = [["a",{"entity":["foofoo"]}],["b",{"entity":["barbar"]}]]
scala> entities.set("___")(json).noSpaces
res2: String = [["a",{"entity":["___"]}],["b",{"entity":["___"]}]]
Вы также можете создать путь явно, но это будет связано снамного больше кода.