繁体   English   中英

有没有更简洁的方法来使用Argonaut删除顶级JSON属性?

[英]Is there a more concise way to remove a top level JSON property using Argonaut?

假设我有这个小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 )的方法的名称似乎有点误导? 我应该如何解释这个名字? 最初我认为有一种方法可以撤消修改历史中的最后一次更改。

UPDATE

我找到了一个解决方案。 使用HCursor

json.hcursor.downField("viewed").delete.undo

为什么undo命名为undo的问题仍然是开放的。

游标是浮动/移动引用,就像C / C ++中的指针一样。 downField是移动指令到光标,因此如果你不撤消光标仍然在“已查看”的情况下而不是父json对象。 要返回父json对象,必须撤消以移动光标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM