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

json - 播放 JSON - 如何在 Scala 中为 Json 处理生成这个?

我目前在 scala 中有这个,它可以满足我的要求:

但是,我想将其通用化,以便我可以将它作为响应放入任何内容,并且只要为我尝试转换为 Json 的类型定义了 Json.writes,它就会对其进行字符串化。

例如:

当然,这不起作用,因为它说没有为Any. 添加一个 forAny也不起作用,因为我收到错误:

以“正确”方式(如果有的话)做到这一点的理想方式是什么?

提前致谢!

0 投票
2 回答
4250 浏览

json - scala.Predef.Map[java.lang.String, scala.Option[scala.Double]] 没有 play.api.libs.json.Format 的实例

尝试为包含选项映射的实体编写 json 格式。它引发以下错误

错误:(8, 68) 没有 play.api.libs.json.Format 实例可用于隐式范围内的 scala.Predef.Map[java.lang.String, scala.Option[scala.Double]](提示:如果在同一个文件中声明,请确保之前声明过)

代码片段:

0 投票
1 回答
54 浏览

json - Scala:导入的 scala 对象,隐含不能提供读取或写入格式(播放 json)

我有一些需要使用隐式序列化和反序列化 json 的 scala 代码。

我们以前通过放置这些隐式语句(用假人简化)来实现一些工作:

全部作为类级别的变量。然后类中的任何方法都可以从 Json 转换得很好。

但是,我们正在尝试将这些格式的隐式定义移动到单独的对象中。

所以我们创建了一个对象(例如:SomeFormatters),它只包含这些隐式:

当我尝试将此对象导入 SomeClass1 时,我收到一个编译错误,指出没有为 SomeItem1 或 SomeItem2 找到反序列化器,即使我正在导入 SomeFormatters。(IDE 说 SomeFormatters 的导入没有被使用,所以我已经知道有些东西不对劲。)

让 SomeClass1 了解 SomeFormatters 中的隐式定义的正确方法是什么?

0 投票
1 回答
174 浏览

scala - Scala Play框架FunctionalCanBuild讲解

出于好奇,对于那些学习 Scala 的人,请解释一下它的实现到底是什么FunctionalCanBuild

因此,可以为Writesplay 框架中的类创建自定义 Json,如下所示:

andis 方法定义在FunctionalBuilderOps并返回,然后FunctionalBuilder[M]#CanBuild2返回FunctionalBuilder[M]#CanBuild3,依此类推,直到FunctionalBuilder[M]#CanBuild22

那为什么是22?如果我的模型有 23 个字段怎么办?从Scala的角度来看如何理解这一点:

为什么~(以及在哪里定义)调用泛型?

我知道,这个问题可能看起来有点复杂,但 stackoverflow 是我唯一的希望,没有谷歌搜索没有 scala 文档有助于理解。

0 投票
2 回答
3006 浏览

scala - 使用 Play WSClient 处理 JSON 错误响应

我正在使用 Play 的 WSClient 与第三方服务进行交互

响应可能是MyResponseClass或可能是ErrorResponse类似{ "error": [ { "message": "Error message" } ] }

是否有解析类错误的典型方法?

我应该做这样的事情吗?

0 投票
1 回答
89 浏览

scala - 编译器无法解析带边界的隐式类型(有时)

编辑

上次修订被认为没有帮助,因为它没有包含有助于缩小我的问题的必要信息。因此还需要包括 AST。

下面是一个完整的库,它允许play-json基于用户定义的模式解析和编写 json;slick在某种程度上类似于 Scala为数据库列提供的功能:

现在让我们编写一小段重现该问题的客户端代码:

我非常怀疑编译器在推断隐式类型 S 时由于Sin的有界类型而遇到问题HasJsonSchema[T, S <: JsonSchema[T]]。到目前为止,仅在所有代码的最后一行所示的特定情况下。作为一个调试尝试,我创造了一个类似的情况,并意识到如果类型S没有限制,我就不会遇到这个问题。任何一种重构代码使其不依赖于有界类型或简单地解决隐式解析的解决方案都值得赞赏

0 投票
1 回答
76 浏览

scala - 为什么在这个例子中隐含的名称似乎会影响其范围解析?

我正在编写一个简单的 JSON 序列化程序,用于java.io.File简化路径:

我发现上述方法不起作用:

但是,如果我将名称更改为Implicit.File.formatto Implicit.File.fmt,它就可以正常工作。

为什么在这种情况下,当它应该是隐式作用域解析器应该关心的类型时,名称会发生​​冲突?Format[File]

我正在使用 play-json 2.6.7。

0 投票
1 回答
1203 浏览

scala - Scala Play JSON 类型转换

我目前正在为 Play 的类型转换而苦苦挣扎!Scala 的 Json 库...
我的数据如下所示:

另外,我有一个 Avro 模式,它定义了每个字段的数据类型,在这种情况下它是:
- id:String
- num:Int -precision
:Float

如果我现在遍历字段并像这样检查 Avro Schema 的类型(请注意,在这种情况下,字段是要获取的值的名称,例如“id”):

我总是得到这个错误:

(注:当然error.expected.jsnumber有时也可以是jsstring)

以下是我已经尝试过但不起作用的转换方式(我有几种不同的映射,它们最终仍然包含 None 或给定类型的值):

我目前正在为 Play 的类型转换而苦苦挣扎!Scala 的 Json 库...
我的数据如下所示:

另外,我有一个 Avro 模式,它定义了每个字段的数据类型,在这种情况下它是:
- id:String
- num:Int -precision
:Float

如果我现在遍历字段并像这样检查 Avro Schema 的类型(请注意,在这种情况下,字段是要获取的值的名称,例如“id”):

我总是得到这个错误:

(注:当然error.expected.jsnumber有时也可以是jsstring)

以下是我已经尝试过但不起作用的转换方式(我有几种不同的映射,它们最终仍然包含 None 或给定类型的值):

不知何故,我对所有类型都有问题,只是在某些情况下,但我有它们......
同样有趣的是,即使类型是JsValue,当我用调试器查看它们时,类型会说Js<type>,例如,JsString而不是JsValue.
在某些情况下,但并非总是如此,它也显示JsString为 Int 类型...

为什么不让它们保持原样JsValue

什么是转换 Play 的正确方法!json类型?

谢谢所有最好的蒂姆

0 投票
1 回答
780 浏览

scala - 带有类型参数的 AST 上的 play-json

我正在尝试为基本上看起来像这样的 AST 创建 play-json 读写

我这样做的尝试看起来像这样

这给我留下了两个问题。

首先是,如果我在 Rule.ruleReads 的两个实例中插入我认为正确的表达式???Json.reads[NoValueRule[R]]并且Json.reads[ValueRule[R, V]]分别得到以下编译错误

第二个是如果我离开,???以便该部分编译它然后无法编译规则对象

我可以改为让规则读/写格式并得到一个非常相似的错误

我认为 2 的问题是包含 a 的规则与我定义的隐式读取之间的区别Seq[Rule[_]]应该涵盖任何特定规则但不是可以是任何规则的规则

有什么想法可以让这个工作吗?我觉得这应该是可能的,但也许不是。

0 投票
1 回答
172 浏览

scala - 将akka远程迁移到akka-http如何序列化为json而不是protocolBuffer而无需大量工作

我在 scala 中有一个已经存在的应用程序,它使用 akka-remote 将消息从 webserver 发送到 appserver。我将把它改为 http 请求。

我看到今天akka-remote 已经为我处理了所有的序列化和反序列化,而无需编写任何序列化器/反序列化器,但协议是协议缓冲区。

使用 http 请求响应,我希望使用 json 而不是协议缓冲区。

从 webserver 发送到 appserver 的消息是复杂的案例类。我不想编写所有编写器/读取器/格式化程序来进行 json 序列化,就像不需要使用 akka 远程编写协议缓冲区序列化一样。

是否有任何解决方案可以让我在不写所有作者/读者的情况下进行 json 序列化?

谢谢