有没有一种更简洁的方法可以使用Argonaut删除顶级JSON属性



假设我有一个小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的问题仍然悬而未决。

光标是浮动/移动引用,就像C/C++中的指针一样。downField是对光标的移动指令,因此,如果不撤消,光标将保持在"已查看"属性,而不是父json对象。要返回到父json对象,您必须undo来移动光标。

相关内容

  • 没有找到相关文章

最新更新