gpt4 book ai didi

javascript - 如何将 scala Seq[] 转换为 Javascript 数组?

转载 作者:行者123 更新时间:2023-11-28 08:36:55 25 4
gpt4 key购买 nike

我尝试在 Play 模板中传递数据Seq[],根据Play Framework文档( http://www.playframework.com/documentation/2.2.x/ScalaJson ),您可以将其转换为Json数组。我试过这个:

$(function() {
var jsArray = JSON.toJSON(customerList);
alert("Customer 1 : " + jsArray[0]);
for (var e in jsArray) {
setCustomers(e["name"], e["id"]);
}
});

但是 chrome 控制台向我显示一条错误消息:

Uncaught TypeError: Object #<Object> has no method 'toJSON' 

我尝试导入 play.api.libs.json._ 但它也不起作用。

有人可以帮助我吗?

最佳答案

试试这个:

$(function() {
var jsArray = @Json.toJson(customerList);
alert("Customer 1 : " + jsArray[0]);
for (var e in jsArray) {
setCustomers(e["name"], e["id"]);
}
});

@ 会将剩余的代码标记为要执行的 scala 代码。如果没有 @,代码将按原样发送到浏览器,并且浏览器不知道 play'scala json 库

根据您的评论,customerList 的类型为 Seq[Customer],因此您必须确保模板中具有 Customer 的反序列化器范围。

假设您在 models 包中定义了 Customer 类,并且您阅读 the documentation您将拥有一个 Customer 对象,其隐式格式与您的 Customer 一起定义。在这种情况下,您需要在模板顶部import models.Customer

示例客户定义如下所示 封装型号

case class Customer(name:String,...)
object Customer{
import play.api.libs.json._
implicit val customerFormats=Json.format[Customer]
}

如果您的 Customer 类型依赖于其他自定义类型,那么您也需要为这些类型导入或定义 Json 序列化程序:

package models
case class CustomerAddress(street:String,postCode:String)
case class Customer(name:String,address:CustomerAddress,...)
object Customer{
import play.api.libs.json._
// need to define 2 json formats : 1 for CustomerAddress and 1 for Customer
implicit val customerAddressFormats=Json.format[CustomerAddress]
implicit val customerFormats=Json.format[Customer]
}

根据您的评论,Customer 类是在另一个可能不依赖于 Play 的项目中定义的,在这种情况下,您仍然可以在另一个对象中定义自定义序列化器

package models
object IdentityAccessComponentFormats{
import play.api.libs.json._
implicit val customerAddressFormats=Json.format[CustomerAddress]
implicit val customerFormats=Json.format[Customer]
}

然后添加

import models.IdentityAccessComponentFormats._

位于模板顶部

关于javascript - 如何将 scala Seq[] 转换为 Javascript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21016878/

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