如何使用scala play将json对象添加到json数组中?
在scala代码中,我有一个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
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)