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)實例。 –