gpt4 book ai didi

json - 如何使用 scala play 将 json 对象添加到 json 数组中?

转载 作者:行者123 更新时间:2023-12-02 04:33:42 28 4
gpt4 key购买 nike

在我的 scala 代码中,我有一个包含电子邮件数据的 json 对象

val messages = inboxEmail.getMessages();
var jsonArray = new JsArray
for(inboxMessage <- messages)
{
...
...
val emailJson = Json.obj("fromAddress" -> fromAddressJsonList, "toAddress" -> toAddressJsonList, "ccAddress" -> ccAddressJsonList, "bccAddress" -> bccAddressJsonList, "subject" -> emailMessage.getSubject().toString(), "message" -> Json.toJson(emailMessageBody))

我需要在每个循环期间将 emailJson 添加到 jsonArray

我试过了

jsonArray.+:(emailJson)

jsonArray.append(emailJson)

但得到空数组

我应该在这里使用什么来将 jsonObject 添加到 json 数组中

最佳答案

记住JsArray是不可变的,所以这样写

jsonArray.+:(emailJson)

不会修改jsonArray,它只会创建一个新的json数组,并在末尾附加emailJson

相反,您需要编写如下内容:

val newArray = jsonArray +: emailJson

然后使用 newArray 而不是 jsonArray

就您而言,您说您需要“在每次循环迭代时”添加一个元素。当使用像 Scala 这样的函数式语言时,您可能应该尝试更多地思考“映射集合”而不是“循环迭代”。例如你可以写:

val values = messages map {inboxMessage =>
...
...
Json.obj("fromAddress" -> fromAddressJsonList, "toAddress" -> toAddressJsonList, "ccAddress" -> ccAddressJsonList, "bccAddress" -> bccAddressJsonList, "subject" -> emailMessage.getSubject().toString(), "message" -> Json.toJson(emailMessageBody))
}
val newArray = objects ++ JsArray(values)

关于json - 如何使用 scala play 将 json 对象添加到 json 数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23753607/

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