3

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

4

1 回答 1

0

光标是浮动/移动引用,就像 C/C++ 中的指针。并且downField是将指令移动到光标,因此如果您不撤消光标,则光标将保留在“已查看”属性中,而不是父 json 对象中。要返回父 json 对象,您必须撤消以移动光标。

于 2016-08-24T18:58:15.327 回答