gpt4 book ai didi

scala - 如何过滤 JsObject 的 ArrayBuffer 以删除具有特定值的项目

转载 作者:行者123 更新时间:2023-12-01 12:40:32 24 4
gpt4 key购买 nike

我的 play 2.3 应用程序中有以下变量

private var messages = ArrayBuffer[JsObject]()

并且我想从消息中删除具有键“message_id”的特定值的所有元素。我当前的实现如下

messages = messages.filterNot{item =>
if ((item \ "message_id").as[Int] == myMessageId){
true
} else {
false
}
}

这行得通,但我几乎可以肯定我错过了一种更优雅的类似 scala 的方法来完成同样的事情。过滤包含特定键/值对的 JsObject 的惯用方法是什么?

最佳答案

您可以使用 Play 的 Reads 转换器。

val messageId = (__ \ "message_id").read[Int].filter(_ == myMessageId)

messages = messages.filter(_.validate(messageId).isSuccess)

这也将处理 message_id 不存在或不知何故不是 int 的情况,但根据您的用例,您可能不想默默地丢弃该错误。

关于scala - 如何过滤 JsObject 的 ArrayBuffer 以删除具有特定值的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com