问题标签 [play-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 回答
1471 浏览

json - 使用 List 从 scala 对象创建 Json

我需要创建一个包含 2 个元素的 Json。第一个元素是一个列表,第二个元素是简单的键值对。我的输出如下所示:

在示例中,第一个元素tables是 List of table。第二个元素是paid

我尝试使用play.api.libs.jsonlib ,但在添加第二个元素时卡住了。

我的代码如下所示:

此代码将 Json 打印为:

我不确定,如何在这个 json 中添加第二个元素。任何建议如何解决这个问题。

0 投票
0 回答
710 浏览

scala - op-rabbit:如何设置从 RabbitMQ 服务器发送到我的订阅者的消息中的内容类型?

我已经在我的 RabbitMQ 服务器上建立了一个direct交换。我将消息发布到该服务器,如下所示:

我的订阅者尝试阅读这些消息:

当我运行播放应用程序时,发布似乎工作正常:

但是订阅者会产生错误,期待不同的内容类型:

这是我的编组器/解组器:

关于可能导致错误的原因以及如何修复它的任何想法?是否只是设置内容类型的问题,如果是,如何设置?谢谢!

0 投票
2 回答
4131 浏览

scala - 案例对象的 Play Framework JSON 格式

我有一组从特征继承的案例对象,如下所示:

我想将其序列化为 JSON,我只是使用了 Format 机制:

但不幸的是,编译器并不高兴,它说:

我的案例对象有什么问题?

0 投票
1 回答
128 浏览

scala - 使用 Scala play-json JsValue.as 解析字符串构建错误

我正在使用 scala play-json 来解析来自字符串的简单 json 对象中的键

'{“测试”:“价值”,“你好”:“世界”}'

我正在执行此操作的代码如下所示:

我能够运行它并获得我想要在 IntelliJ 中运行调试器的结果,所以我知道这段代码可以正常工作。但是,当我尝试sbt assembly在我的项目上运行时,我收到一个构建错误说

Validation.scala:126:在类文件“DefaultReads.class”中遇到对 java.time 的错误符号引用。

[错误] 无法访问包 java 中的学期时间。当前类路径可能缺少 java.time 的定义,或者 DefaultReads.class 可能已针对与当前类路径中找到的版本不兼容的版本进行编译。

[错误] val values = Json.parse(value).as[JsObject].keys.toList

我正在运行 jdk 1.8.0_111,所以我不应该遇到我在尝试使用 play-json 库的其他 SO 帖子中发现的问题。

我正在使用 sbt 版本 0.13.13、scala 版本 2.11.0 和(尝试使用)play-json 版本 2.5.12

0 投票
2 回答
7500 浏览

scala - Scala - 使用 Play json 将字符串转换为 Json

我需要帮助来使用 playJson 将 json 字符串解析为 scala 类

我写了一个格式化程序,但我不知道如何处理嵌套数组。

文档案例类在哪里

和格式化程序

这是我的源 json

任何想法 ?

0 投票
1 回答
875 浏览

scala - Create and fill a JsArray with play-json transformer

With Play/Scala, I try to transform this json:

into this result:

Any idea how to apply the magic? Here's what i tried:

Get the code here: https://gist.github.com/chrissom/20c5aa254210d7c32f53479df6a66f68

0 投票
1 回答
520 浏览

json - 为什么不序列化 Option[String] 类型的成员?

我有一个虚拟类Foo,它有三个成员:

其中FooType定义为

Foo我在序列化对象时发现了一些有趣的行为。如果我将 a 序列化为FooJSON,解析 JSONified Foo,我发现所有成员都被正确解析:

这很好,因为这是我所期望的。

但是,在我的下一个测试中,我发现该nextId字段根本不可序列化:

这失败并出现以下错误:

同样,我发现当我打印由 转储的 JSON 对象时,JSON 对象中缺少Json.toJson(foo)该字段:nextId

但是,我可以使用;解析该nextId字段。toOptionIE,

如果我的对象之一不是本机可反序列化的,如何从 JSON 中正确解析我的对象?

0 投票
1 回答
227 浏览

json - 如何从隐式请求中解析 JSON 中的有界类型 T 的对象?

我有一些简单的消息,它们隐含Json.readsJson.formats在它们的伴随对象中定义。所有这些消息都扩展了MyBaseMessage.

换句话说,对于任何T <: MyBaseMessage,T都是(反)可序列化的。

这些消息表示要在集群上执行的简单 CRUD 操作,因此在发送 JSON 的 CLI 和集群之间有一个 Play 服务器。因为操作简单,所以我应该可以Action在 Play 端做一些非常通用的 s:当我在一个端点接收到 JSON 时,根据端点反序列化消息并将该消息转发到集群。

我的最终目标是做这样的事情:

所以当请求发送到addBoo消息对应的路由时,请求的JSON会被解析成AddBooMessage消息并推送到集群中。重复恶心。

我写了以下内容:

但我发现以下错误:

没有为 type 找到 Json 反序列化器T。尝试为这种类型实现一个隐式ReadsFormat

但是,所有这些消息都是可序列化的,并且两者都有ReadsFormat为它们定义。

我试图传递(implicit fjs: Reads[T])parseAndForward希望隐式提供Reads所需的(尽管它应该已经隐式提供),但它没有帮助。

我怎么解决这个问题?

0 投票
1 回答
135 浏览

scala - Play JsPath 为 Infinite Double 编写

我正在尝试实现一个编写 Doubles 的函数,该函数的值可能为 Infinity(JSON 中不存在)。

以下是我想要实现的一些示例:

到目前为止,我已经创建了一个增强的 JsPath 类,并添加了名为writeInfinite

代码全部编译,这是我正在使用的测试:

测试失败,因为值为result

代替:

我不知道如何修改我writeInfinite以尊重路径。

0 投票
1 回答
140 浏览

json - 如何在编译时以编程方式创建验证合约?

如果这是一个 XY 问题,我提前道歉。

tl;博士:

我想要一个类型的编译时映射,[Request.type, Response.type]这样我就可以有效地说如果我发送 message Request,CLI 应该在编译时知道如何反序列化它的 expected Response,而不管它不知道什么类型的请求会一直发送到运行时。

太长; 仍然阅读:

我有一个与 HTTP 服务器通信的 CLI,根据发送到 HTTP 服务器的消息类型,我想根据案例验证 JSON 响应。

例如,如果我向 HTTP 服务器发送一条AddFoo消息,我可能想验证 JSON 响应是否可以反序列化为AddedFoo等。

我目前的解决方案非常hacky。使用 play-json,我尝试使用从config.mode(即,发出给 CLI 的命令)到预期响应的映射来解析 JSON 响应Reads

我的代码看起来像这样:

虽然这很有效,但随着消息数量的增加,它变得越来越难以维护。此外,我发现这种模式需要在需要进行某种类型的验证或转换(例如,Future[Any]转换为Future[AddedFoo])的任何地方复制。

当然我的方法不是正确的方法......传统上这是如何完成的?如果是正确的方法(请不要),是否可以进行优化?