如何使用scala play将json对象添加到json数组中?
发布时间:2020-12-16 08:53:13 所属栏目:安全 来源:网络整理
导读:在我的 scala代码中,我有一个包含电子邮件数据的json对象 val messages = inboxEmail.getMessages();var jsonArray = new JsArrayfor(inboxMessage - messages){ ... ... val emailJson = Json.obj("fromAddress" - fromAddressJsonList,"toAddress" - toAdd
在我的
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,"message" -> Json.toJson(emailMessageBody)) } val newArray = objects ++ JsArray(values) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |