2

次の単純な 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 ドキュメントが変更されていません。ただし、データ型を尊重すれば、物事は正常に機能します。同じデータ型の変更のみにレンズを使用する必要がある理由はありますか? または、私はひどく間違ったことをしています:)

4

1 に答える 1