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

如何使用scala play将json对象添加到json数组中?,json,scala,playframework,Json,Scala,Playframework,在scala代码中,我有一个json对象,由电子邮件数据组成 val messages = inboxEmail.getMessages(); var jsonArray = new JsArray for(inboxMessage <- messages) { ... ... val emailJson = Json.obj("fromAddress" -> fromAddressJsonList, "toAddress" -> toAddressJs

在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))

但是得到空数组


在这里,我应该使用什么将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)

谢谢你宝贵的回答
val newArray = jsonArray +: emailJson
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)