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

标签 javascript json scala playframework-2.0

我尝试在 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/

相关文章:

javascript - 显示并停留在鼠标悬停上的 Div - 即使在鼠标悬停时也保持悬停状态

javascript - moment.js 对于 JSON 日期格式的字符串有效

javascript - 图片无法在我的页面中显示

node.js - 如何使用 Zod "deep"解析包含 JSON 字符串的架构?

node.js - 从 NodeJS 或 Play 安排 Spark 作业!服务器

javascript - 点击功能上的 JQuery 按钮不起作用

php - 如何设置json格式的请求体

javascript - 如何将 datepicker 日期转换为 JSON 对象以在 AJAX 请求中使用

scala - Spark Redis连接器可将数据写入Redis的特定索引

scala - 如何使Scala canBuildFrom构建从Seq到Set的集合类型