如何解决使用circe从json数组中删除密钥
[
{
"a": "a","b": "b","c": "c"
},{
"a": "a1","b": "b1","c": "c1"
}
]
现在,我想删除c
的密钥。因此结果将是:
[
{
"a": "a","b": "b"
},"b": "b1"
}
]
我正在使用circe,到目前为止,我所做的是:
parse(entityAs[String]) match {
case Right(value) =>
val json = value.hcursor
val result = json.downArray.downField("c").delete
println(">>>>>>>>>>>>>>>>>")
println(result.right.as[List[Json]])
case Left(_) =>
}
此行有问题
val result = json.downArray.downField("c").delete
删除密钥c
然后使用circe将其转换回json列表的正确行是什么?
解决方法
delete
返回一个光标,该光标位于删除元素的位置。您想要返回整个文档,可以使用top
返回顶部。您将取回修改后的文档。给定
val doc = parse(entityAs[String])
通过
到达顶部doc.hcursor.downArray.downField("c").delete.top
会给你
Some([
{
"a" : "a","b" : "b"
},{
"a" : "a1","b" : "b1","c" : "c1"
}
])
但是据我了解,您也希望删除下一个“ c”。那是
doc.hcursor.downArray.downField("c").delete.right.downField("c").delete.top
或者,将其全部删除
def removeCs(element: ACursor): ACursor = {
val deleted = element.downField("c").delete
val focus = deleted.success.getOrElse(element)
focus.right.success match {
case Some(next) => removeCs(next)
case None => focus
}
}
removeCs(doc.hcursor.downArray).top
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。