问题标签 [playframework-json]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
10308 浏览

json - Play2 找不到 JSON 的隐式读取或格式

这是我的搜索对象:

我在使用 WS 调用 web 服务时尝试使用这个类:

但是 scala 编译器一直抱怨这一行:

没有为 models.helper.Search 类型找到 Json 反序列化器。尝试为此类型实现隐式读取或格式。

谁能告诉我我做错了什么?

0 投票
2 回答
18514 浏览

json - 使用 play.api.libs.json 将对象序列化为 json

我正在尝试将一些相对简单的模型序列化为 json。例如,我想获得以下的 json 表示:

我需要用适当的读写方法编写自己的 Format[User] 还是有其他方法?我看过https://github.com/playframework/Play20/wiki/Scalajson但我还是有点迷茫。

0 投票
1 回答
981 浏览

json - 在 Play 框架中使用读、写和格式

我在 Play 中有一些模型!我想从 JSON 序列化/反序列化的应用程序。我曾经有单独的方法,但我已经看到首选的方法是给出Formats[T]or的隐式实例Reads[T],比如

现在,模型可能在 JSON 中有正确的字段,但它没有验证。在这种情况下,我无法反序列化 - 在使用json.as[Foo]None使用json.asOpt[Foo].

如果我在发现未验证的字段时抛出异常,则一切似乎都按预期工作。但是我小心翼翼地试图找出我应该抛出什么异常,并且在源代码中JsValue我发现了这个

现在,我无法理解这应该如何工作。的隐式实例fjs由我自己在伴生对象中提供,所以我知道fjs.reads(this)要么返回 aFoo要么抛出异常。

这是fold从哪里来的?它当然不是一种方法Foo。我想一个人可能有一个隐式转换,但它应该是从Any某种fold方法到某物,所以它不会引起太大兴趣。更糟糕的是,如果fjs.reads(this)抛出异常,则没有任何东西可以捕获它!

那么,应该如何处理 JSON 中的无效输入Reads[T]?上面的机制实际上是如何工作的?

0 投票
2 回答
2060 浏览

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

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

不幸的是,我在运行应用程序时收到以下错误:

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

有人发现我的错误吗?

非常感谢,
乔尔

0 投票
1 回答
1463 浏览

json - 在 Play 2 中使用 JSON 时出错

我正在尝试使用 JSON 和 Play Framework 2.1.0 和 Scala 2.10 进行序列化/反序列化。我正在使用 Anorm,并且我有一个非常简单的对象,我想将它存储在数据库中。订单非常简单:

在我的控制器中,我正在尝试构建一个 REST 接口,以便能够以 JSON 形式接受和发送 Order 实例(上图)。在那里,我有以下代码:

但是,当我使用以下命令运行“play test”时,编译失败:

覆盖方法读取 trait Reads of type (json: play.api.libs.json.JsValue)play.api.libs.json.JsResult[anorm.Pk[Long]]; [错误] 方法读取的类型不兼容 [错误] def reads(json: JsValue):Pk[Long] = Id(json.as[Long])

有谁知道为什么会这样?

我对 JAXB 有很多经验,但我对 Play 和 Scala 还是很陌生,到目前为止我还没有找到任何答案。这似乎是一个非常简单的用例,实际上我希望有一个更简单的解决方案(如注释),但我无法找到一个(至少现在还没有)

任何帮助是极大的赞赏!

谢谢

0 投票
1 回答
3352 浏览

json - Play Framework 2.1.1 Json 写入嵌套对象

整个下午我一直在努力解决这个问题,但无济于事,Play 2.1.1 彻底改变了 Json 读写的工作方式。

基本上我有一个看起来像这样的包装器对象:

如您所见,它包含 2 个我想要序列化和反序列化为 json 的类。

但我不明白如何使用新设计获取和设置子类中的字段。

例如

我想要一个包含大部分子类字段的json blob,所有字符串。

因为它使用了应用的东西,所以我看不到如何在映射之前创建子类。

非常感谢任何帮助或指导。

谢谢

汤姆

0 投票
2 回答
8293 浏览

json - 使用 Play 2.1.1 遍历 JSON 中的数组

我正在使用 play 2.1.1 并且在遍历数组时遇到问题。我在某处读过,您可以为 List[Object] 创建读取,但每次我尝试这样做时,我都会收到一条错误"No unapply function found"消息

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

我不知道还能尝试什么。任何帮助将不胜感激。

0 投票
1 回答
991 浏览

scala - 如何使用转换器在 Scala Play Framework 2.1 中修剪 JsArray

为了减少从我无法更改的内部 Web 服务到 Internet 客户端的网络流量,我想减少 JSON 响应。

因此,Web 服务“中继”仅提取 JSON 响应的特定子集。

由于正在发生的只是将 JSON 从一种格式转换为另一种格式,因此我更愿意在 Play Framework 2.1 中使用新的 JSON 转换器(请参阅:http ://www.playframework.com/documentation/2.1.1/ScalaJsonTransformers )

为了增加难度,响应是一个不同 JSON 对象的数组,每个对象只需要两个字段。

作为一个特定的虚拟示例,我正在尝试转换以下 JSON:

进入:

我使用的模板方法是:

0 投票
2 回答
7259 浏览

json - Scala Play Json 读取

我有一个示例代码如下。

当我尝试将 json 解析为 Scala 对象(在本例中为业务类)时,出现 Json 验证错误。错误是

JsError(List((/retailer,List(ValidationError(validate.error.missing-path,WrappedArray()))), (/preferredUrl,List(ValidationError(validate.error.missing-path,WrappedArray()))), (/name,List(ValidationError(validate.error.missing-path,WrappedArray()))), (/businessPhone,List(ValidationError(validate.error.missing-path,WrappedArray())))))

但是,如果我的 json 像

请注意,外括号“{”和“business:”键已被删除。我得到了一个 JsSuccess。在第一种情况下,我如何为 Json 编写读取?另外,我怎样才能以通用的方式做到这一点?

请帮忙。

0 投票
2 回答
625 浏览

json - PlayFramework 2.2 - Scala - 读取混合数组

我正在尝试使用读取器/组合器来解析包含混合数据类型的数组,但我不确定如何为这样的东西指定读取器。我有一些这样的 JSON:

我想将所有这些解析为字符串表示,但是当我尝试使用阅读器时,List[String]我得到了解析异常。我想象这样的事情:

但是,由于没有阅读器JsValueWrapper,我不确定从这里去哪里。任何帮助是极大的赞赏。

谢谢!