使用圆形光学修改任何级别的字段
Modify field at any level with circe-optics
我正在尝试使用环形光学在任何级别转换 "model" 场,但我在实现这一点时遇到了困难。
输入:
{
"model":"ModelExample1",
"test": {
"model":"ModelExample2"
}
}
预期输出:
{
"model":"AAAA-ModelExample1",
"test": {
"model":"AAAA-ModelExample2"
}
}
Circe optics 不提供开箱即用的递归修改功能。但是,您可以制作一个:
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
换成 modifyAllModels
中的 test
。
我正在尝试使用环形光学在任何级别转换 "model" 场,但我在实现这一点时遇到了困难。
输入:
{
"model":"ModelExample1",
"test": {
"model":"ModelExample2"
}
}
预期输出:
{
"model":"AAAA-ModelExample1",
"test": {
"model":"AAAA-ModelExample2"
}
}
Circe optics 不提供开箱即用的递归修改功能。但是,您可以制作一个:
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
换成 modifyAllModels
中的 test
。