问题标签 [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.
json - 使用 List 从 scala 对象创建 Json
我需要创建一个包含 2 个元素的 Json。第一个元素是一个列表,第二个元素是简单的键值对。我的输出如下所示:
在示例中,第一个元素tables
是 List of table
。第二个元素是paid
。
我尝试使用play.api.libs.json
lib ,但在添加第二个元素时卡住了。
我的代码如下所示:
此代码将 Json 打印为:
我不确定,如何在这个 json 中添加第二个元素。任何建议如何解决这个问题。
scala - op-rabbit:如何设置从 RabbitMQ 服务器发送到我的订阅者的消息中的内容类型?
我已经在我的 RabbitMQ 服务器上建立了一个direct
交换。我将消息发布到该服务器,如下所示:
我的订阅者尝试阅读这些消息:
当我运行播放应用程序时,发布似乎工作正常:
但是订阅者会产生错误,期待不同的内容类型:
这是我的编组器/解组器:
关于可能导致错误的原因以及如何修复它的任何想法?是否只是设置内容类型的问题,如果是,如何设置?谢谢!
scala - 案例对象的 Play Framework JSON 格式
我有一组从特征继承的案例对象,如下所示:
我想将其序列化为 JSON,我只是使用了 Format 机制:
但不幸的是,编译器并不高兴,它说:
我的案例对象有什么问题?
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
scala - Scala - 使用 Play json 将字符串转换为 Json
我需要帮助来使用 playJson 将 json 字符串解析为 scala 类
我写了一个格式化程序,但我不知道如何处理嵌套数组。
文档案例类在哪里
和格式化程序
这是我的源 json
任何想法 ?
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
json - 为什么不序列化 Option[String] 类型的成员?
我有一个虚拟类Foo
,它有三个成员:
其中FooType
定义为
Foo
我在序列化对象时发现了一些有趣的行为。如果我将 a 序列化为Foo
JSON,解析 JSONified Foo,我发现所有成员都被正确解析:
这很好,因为这是我所期望的。
但是,在我的下一个测试中,我发现该nextId
字段根本不可序列化:
这失败并出现以下错误:
同样,我发现当我打印由 转储的 JSON 对象时,JSON 对象中缺少Json.toJson(foo)
该字段:nextId
但是,我可以使用;解析该nextId
字段。toOption
IE,
如果我的对象之一不是本机可反序列化的,如何从 JSON 中正确解析我的对象?
json - 如何从隐式请求中解析 JSON 中的有界类型 T 的对象?
我有一些简单的消息,它们隐含Json.reads
并Json.formats
在它们的伴随对象中定义。所有这些消息都扩展了MyBaseMessage
.
换句话说,对于任何T <: MyBaseMessage
,T
都是(反)可序列化的。
这些消息表示要在集群上执行的简单 CRUD 操作,因此在发送 JSON 的 CLI 和集群之间有一个 Play 服务器。因为操作简单,所以我应该可以Action
在 Play 端做一些非常通用的 s:当我在一个端点接收到 JSON 时,根据端点反序列化消息并将该消息转发到集群。
我的最终目标是做这样的事情:
所以当请求发送到addBoo
消息对应的路由时,请求的JSON会被解析成AddBooMessage
消息并推送到集群中。重复恶心。
我写了以下内容:
但我发现以下错误:
没有为 type 找到 Json 反序列化器
T
。尝试为这种类型实现一个隐式Reads
或Format
。
但是,所有这些消息都是可序列化的,并且两者都有Reads
并Format
为它们定义。
我试图传递(implicit fjs: Reads[T])
给parseAndForward
希望隐式提供Reads
所需的(尽管它应该已经隐式提供),但它没有帮助。
我怎么解决这个问题?
scala - Play JsPath 为 Infinite Double 编写
我正在尝试实现一个编写 Doubles 的函数,该函数的值可能为 Infinity(JSON 中不存在)。
以下是我想要实现的一些示例:
到目前为止,我已经创建了一个增强的 JsPath 类,并添加了名为writeInfinite
:
代码全部编译,这是我正在使用的测试:
测试失败,因为值为result
:
代替:
我不知道如何修改我writeInfinite
以尊重路径。
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]
)的任何地方复制。
当然我的方法不是正确的方法......传统上这是如何完成的?如果是正确的方法(请不要),是否可以进行优化?