假设我有这个小Argonaut Json
个实例:
import argonaut._, Argonaut._
Json.obj(
"id" := 42,
"viewed" := false
)
现在,我想删除密钥为viewed
的对。我找到了以下工作,但它有点过于冗长。有什么比这短:
for {
field <- json.cursor.downField("viewed")
updated <- field.delete
} yield updated.undo
另外,在我看来,“提交”更改(undo
)的方法名称似乎有点误导?我应该如何解释这个名字?最初我认为有一种方法可以撤消修改历史中的最后一次更改。
我找到了一个解决方案。使用HCursor
:
json.hcursor.downField("viewed").delete.undo
为什么undo
被命名为undo
的问题仍然存在。
答案 0 :(得分:0)
Cursor浮动/移动引用就像C / C ++中的指针一样。 并且 downField 是移动指令到光标,因此如果你没有撤消光标仍然在“已查看”的角色而不是父json对象。 要返回父json对象,必须撤消以移动光标。