小编acj*_*jay的帖子

使用Play Scala api和Json序列化对象

我尝试使用Scala到Json在play 2.0应用程序中序列化我的模型.这是我的代码的样子:

package models

import play.api.libs.json._

case class Task(id: Long, label: String, date: String)

object Task {

  ...

  implicit object TaskFormat extends Format[Task] {
    def reads(json: JsValue): Task = Task(
      (json \ "id").as[Long],
      (json \ "label").as[String],
      (json \ "date").as[String])

    def writes(t: Task): JsValue = JsObject(Seq(
      "id" -> JsNumber(t.id),
      "label" -> JsString(t.label),
      "date" -> JsString(t.date)))
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,运行应用程序时出现以下错误:

verriding method reads in trait Reads of type (json: play.api.libs.json.JsValue)play.api.libs.json.JsResult[models.Task]; method reads has incompatible type
Run Code Online (Sandbox Code Playgroud)

我还没有找到解决方案.api的文档(http://www.playframework.org/documentation/api/2.0/scala/play/api/libs/json/package.html)似乎也暗示了我采取的方法.

有人发现我的错误吗?

非常感谢,
乔尔

json scala jackson playframework-2.0 playframework-json

3
推荐指数
1
解决办法
2001
查看次数

使用Play 2.1.1迭代JSON中的数组

我正在使用play 2.1.1,我在迭代数组时遇到问题.我读的地方,你可以创建一个列表[对象]一读,但每次我尝试这样做,我得到一个错误"No unapply function found"的这行

implicit val userListReads: Reads[List[FBUser]] = Json.reads[List[FBUser]]". The issue is " = Json.reads[List[FBUser]]

我无法尝试其他什么.任何帮助将不胜感激.

def linkUsers() = Action { implicit request =>
  val json = Json.parse("{\"data\": [{\"name\": \"Me Lazyan\",\"id\": \"1182\"},{\"name\": \"Chales Dselle\",\"id\": \"10115\"},{\"name\": \"Be My\",\"id\": \"10275\"},{\"name\": \"De Rwani\", \"id\": \"11189\"},{\"name\": \"Phoe Johon\", \"id\": \"11372\"}]}")

  val peoples = json.validate[List[FBUser]].get
  peoples.foreach(println)

  Ok(json).withHeaders(CONTENT_TYPE -> "text/json")
}

case class FBUser(
  name: String,
  id: String 
)

object FBUser {
    /** Uses a Scala Macro to define the Reads function …
Run Code Online (Sandbox Code Playgroud)

json scala playframework playframework-2.0 playframework-json

3
推荐指数
2
解决办法
7847
查看次数

任意多边形的宽度

我需要一种表征2D点集大小的方法,以便可以根据视口的比例确定将它们渲染为空间中的单个点还是代表性多边形。我已经有了一种算法来计算集合的凸包以生成代表性多边形,但是我需要一种表征其大小的方法。一个明显的度量是凸包上点之间的最大距离,即集合的直径。但是我真的更感兴趣于垂直于其直径的横截面的大小,以找出边界多边形有多窄。给定顶点和最远点的索引的排序列表(理想情况是在Python中),是否有一种简单的方法来做到这一点?

或者,是否有一种简单的方法来计算一组点的最小面积边界椭圆的半径?我已经看到了解决此问题的一些方法,但是没有什么可以轻易转换为Python的,所以我真的在寻找可以交钥匙的东西。

python computational-geometry

2
推荐指数
1
解决办法
1842
查看次数

如何缩小sbt-concat生成的js

我正在使用sbt-concat来组合css/js包进行实验.然后我尝试扩展我的管道,以便缩小我的css和js.使用sbt-css-compress相当容易,它可以缩小sbt-concat生成的所有CSS.我为js尝试了sbt-closure,但它似乎不起作用.为了清楚起见,我尝试了sbt-closure,并确认它将以下所有js编译为/ assets.但是,我试图弄清楚它是否适用于sbt-concat.

例如:如果我有/assets/js/f1.js和/assets/js/f2.js并且我想将它们组合并缩小为1个捆绑文件.

playframework-2.3 sbt-web sbt-concat

2
推荐指数
1
解决办法
1739
查看次数

如何将Map [CustomType,String]序列化为JSON

鉴于以下Enumeration...

object MyEnum extends Enumeration {

  type MyEnum = Value

  val Val1 = Value("val1")
  val Val2 = Value("val2")
  val Val3 = Value("val3")
} 

import MyEnum._
Run Code Online (Sandbox Code Playgroud)

...以及以下Map...

val m = Map(
  val1 -> "one",
  val2 -> "two",
  val3 -> "three"
)
Run Code Online (Sandbox Code Playgroud)

...我需要转换m为JSON:

import play.api.libs.json._

val js = Json.toJson(m)
Run Code Online (Sandbox Code Playgroud)

最后一条语句无法编译,因为编译器找不到type的Json序列化器scala.collection.immutable.Map[MyEnum.Value,String]

问题:由于Play确实提供了type的序列化器scala.collection.immutable.Map[String,String],并且我的枚举实际上包含字符串,是否可以重用默认的JSON序列化器?

scala playframework playframework-json

2
推荐指数
1
解决办法
1006
查看次数

从Scala中的seq到_*

有谁知道我们如何以自动方式从任何Seq转换为_*?每次我们有Seq时强制类型并且方法使用类型为vararg的参数非常麻烦.

def mean[T: Numeric](elems: T*): Double
...
elems = Seq(1.0, 2.0, 3.0)
mean(elems) // this doesn't compiles
mean(elems: _*) // this compiles but it is cumbersome
Run Code Online (Sandbox Code Playgroud)

scala variadic-functions

2
推荐指数
1
解决办法
653
查看次数

为什么使用Playframework转换为JSON如此冗长?

我只是比较如何在java中将对象序列化和反序列化为JSON.

ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'john smith'}";

User user = mapper.readValue(jsonInString, User.class);
Run Code Online (Sandbox Code Playgroud)

使用Playframework和Scala,我必须创建这些读取和写入映射器,它们非常冗长.(参见:https://www.playframework.com/documentation/2.5.x/ScalaJsonHttp)

为什么它不能像java w/Jackson一样"工作"?

我有我的模型,我想简单地读/写然后到JSON.使用Java,我没有任何样板代码可供编写.

json scala playframework playframework-json

1
推荐指数
1
解决办法
124
查看次数

在GraphQL中表示枚举+对象变体类型

是否有最佳实践来表示变量字段,该字段可以是具有子字段的对象,也可以是一个或多个enum类似的单例值?就像,如果只有一个单例值,可以使用可空union(如果有点笨拙,如果该值不感觉"零"),但是不止一个单例呢?

我的域模型有很多enum像这样的结构,其中一些变体不携带任何数据.我希望答案不是制作虚拟字段,以便每个变体都是一个对象类型,以满足要求union.但也许我错过了一些东西.

enums algebraic-data-types discriminated-union graphql

1
推荐指数
1
解决办法
983
查看次数