1
下面是一个例子对Argonaut's lens documentation一个简化版本:如何使用Argonaut镜头修改数字JSON字段?
import argonaut._, Argonaut._
val obj: Json = Parse.parseOption("""{"a":{"b":"x","c":2}}""").get
val lens1 = jObjectPL >=> jsonObjectPL("a") >=>
jObjectPL >=> jsonObjectPL("b") >=> jStringPL
lens1.mod(_ + "y", obj)
// res0: argonaut.Json = {"a":{"b":"xy","c":2}}
你怎么做了类似的事情数字字段?例如,假设我们想在obj
添加1
到上面的数字,让
// res1: argonaut.Json = {"a":{"b":"x","c":3}}
我第一次尝试的结果是尝试
val lens2 = jObjectPL >=> jsonObjectPL("a") >=>
jObjectPL >=> jsonObjectPL("c") >=> jNumberPL
lens2.mod(_ + 1, obj)
但这最后一行没有编译。
备注:“PL”代表“部分镜头”,因为它们是Scalaz [PLens](http://docs.typelevel.org/api/scalaz/nightly/index.html#scalaz.PLensFamily)实例。 –