次の単純な JSON ドキュメントを想定します。
{
"key" : "val1"
}
「キー」の値を更新したいのですが、同時にその型も変更するので、文字列からintに変更します。さて、以下のような HCursor を使用すると、それを行うことが可能で簡単になります。
val cursor = js.hcursor
val position = (cursor --\ "key") >-> (_ => jNumber(1))
上記の位置を「元に戻す」ことで、「キー」が文字列ではなく数値を持つ新しいjsonを持つことになり、これは完璧です。
レンズを使って同じことをすることは可能ですか?私は次のことをしようとしました:
val lense = jObjectPL >=>
jsonObjectPL("key") >=>
jNumberPL
lense.mod(_ => JsonBigDecimal(1), js)
しかし、エラーは発生しませんが、機能しませんが、最終的には元の json ドキュメントが変更されていません。ただし、データ型を尊重すれば、物事は正常に機能します。同じデータ型の変更のみにレンズを使用する必要がある理由はありますか? または、私はひどく間違ったことをしています:)