问题标签 [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.
scala - 在 Scala 中,参考抽象超类中的子类
有没有办法让this
超类中的关键字引用该类的子类?具体来说,我正在尝试执行以下操作(Json 指的是 Play 的 Json 库):
这给出了错误No Json serializer found for type A. Try to implement an implicit Writes or Format for this type.
。所以它说它不能序列化 type 的对象A
,这是有道理的。然而,目标是让this
inJson.toJson(this)
引用子类(在本例中是B
)。
有没有办法做到这一点?如果没有,有没有其他方法可以Json.toJson(...)
在超类中实现该方法而不必在子类(以及所有其他子类A
)中实现?
scala - Scala 中的通用 REST 客户端
我对 Scala 有点陌生,我正在尝试为我想使用的 RESTful api 编写一个通用客户端。我能够为我想实例化我的客户端的具体案例类提供具体的Reads[T]
和特定的案例类,但是编译器希望找到任何类型的和,而不仅仅是我正在使用的类型。一些代码来说明(我省略了不相关的部分):Writes[T]
Reads[T]
Writes[T]
我的通用客户:
JsonSupprt 特性:
我只是实例化,RestModule[Account]("accounts",config)
但我得到了错误
当 T 只能是 Account 类型时,为什么编译器认为它需要对类型 T 的写入?有没有办法解决这个问题?
json - Scala play-json - 不解析/反序列化为单个参数案例类
在 Scala 中,我想解析使用 Travis CI REST API 检索到的 JSON 响应。为此,我决定使用 play-json 库。除此之外,根据 REST API '模式',我定义了以下案例类:
实现本身应该是不言自明的,但如果需要任何进一步的描述,我会更新问题。
除此之外,我还为 play-json 库定义了以下读取:
代码确实编译,架构即案例类确实确认了 REST API 响应,但是,在验证响应时,我收到以下错误:
JsError(List((/builds(0)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(0)/pull_request_number,List(ValidationError(List(error. expected.jsstring),WrappedArray()))), (/builds(1)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(1)/pull_request_number, List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(2)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), ( /builds(2)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(3)/pull_request_title,List(ValidationError(List(error.expected.jsstring), WrappedArray()))), (/builds(3)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(4)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(4)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), ( /builds(5)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(5)/pull_request_number,List(ValidationError(List(error.expected.jsstring), WrappedArray()))), (/builds(6)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(7)/pull_request_title,List(ValidationError(List) (error.expected.jsstring),WrappedArray()))), (/builds(7)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(8) /pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(8)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(9)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(9)/pull_request_number,List( ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(10)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds (10)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(11)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray( )))), (/builds(12)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(12)/pull_request_number,List(ValidationError(List(error) .expected.jsstring),WrappedArray()))), (/builds(13)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))),(/builds(13)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(14)/pull_request_title,List(ValidationError(List(error.expected.jsstring) ,WrappedArray()))), (/builds(14)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(15)/pull_request_title,List(ValidationError( List(error.expected.jsstring),WrappedArray()))), (/builds(15)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(16) )/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(17)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()) )), (/builds(18)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(18)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(19)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), ( /builds(19)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(20)/pull_request_title,List(ValidationError(List(error.expected.jsstring), WrappedArray()))), (/builds(20)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(21)/pull_request_number,List(ValidationError(List) (error.expected.jsstring),WrappedArray()))), (/builds(22)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(22) /pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(23)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(23)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(24)/pull_request_title, List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(24)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray())))))
关于问题可能是什么的任何线索?提前致谢!
json - 如何在 play-json scala 中使用未使用字段的 json 失败?
使用 scala play-json 库,如何拒绝包含未使用字段的 JsonObject?当我的 api 用户拼错一个字段或给出一个我会忽略的额外字段时,我想给出一个错误。在 java 版本中,我看到提到DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
,但在 scala 版本中没有看到。
这是我想要的单元测试:
而这个 build.sbt
scala - play-json - 找不到参数 um 的隐式值
我知道这个问题已经被问过很多次了,但是他们都使用spray-json。我想使用 play-json。这可能是所提出的解决方案不能解决问题的原因。带有 的特征route
在一个名为RestApi.scala的单独文件中。使用Http.bindAndHandle
它的文件位于名为Main.scala的文件中。下面介绍了两个没有删除无关元素的文件。如果您想查看整个文件,请单击上面的链接。
RestApi.scala
Main.scala
我指出 RestApi.scala 错误消息中发生错误的行:
这是在Contact.scalaContact
中定义的数据模型。
我希望这不是重复的,但我真的不这么认为。任何帮助深表感谢。
scala - Play Action Composition - 硬编码参数化解析器
我想创建一个自定义操作,它可以消除编写这样的操作的样板:
但是,我一直遇到类定义错误。这是我最成功的尝试:
但我收到以下错误:method composeAction overrides nothing.
如果我改成composeAction[A: Reads]
它composeAction[A]
告诉我没有 A 类型的 Json 序列化器。
还有其他方法可以定义此自定义操作吗?
json - 为对象名称和值播放框架 JsReads
考虑以下 JSON:
有什么办法,使用 JSONreads
将这个 JSON 转换为 Scala 案例类?即 aSeq[Years]
或 a Map[String, String]
,其中a Year 包含年份和描述。
作为参考,这是read
为“简单”JSON 结构定义的方式:
隐含的JsReads
play-json - 如何使用 Play JSON 对 JsArray 进行迭代,避免使用案例类?
这是我的用例:我需要访问 JSON 文档中的数组,然后对其进行迭代,以便将 JSON 海岸到海岸转换应用于每个对象并获取转换后的对象的集合。
我正在考虑这样的方法:
但是results
是一种JsLookupResult
类型,没有.map()
方法。
我需要做什么?
scala - 播放 json、递归读取、npe
我有两个案例类:
第一的:
一个人可能有 0 个或一些同事
第二:
我做了测试:
但是该测试失败并出现错误:
我想这是一种课程依赖错误。CoWorker 使用 Person 的 jsonReads,而 Person 使用 CoWorker jsonReads。是否可以解决此问题并进行测试?
scala - 对于 Option[T] 类型,让 play-json 将空字符串读取为 None
我正在尝试使用 play-json 从 GitHub API 解析 json,并merge_commit_sha
在 Pull Requests 上遇到了该字段的问题(顺便说一下,我知道该字段已被弃用,但不想在此解析问题中讨论这个问题!) . 不幸merge_commit_sha
的是,在某些情况下,字段会以空字符串的形式返回:
这是在我的案例类中声明该字段的方式:
我有一个implicitFormat[ObjectId]
,它不能容忍空字符串,因为这不是Git 哈希ID 的有效值。我还使用了Read[PullRequest]
我想继续使用的 play-json macro-generated ,而不是单独声明拉取请求中每个字段的读取。
由于我已将该字段声明为选项,因此我希望"merge_commit_sha": ""
将其读取为 value None
,但这不是当前发生的情况 - 存在一个字符串,因此Format[ObjectId]
调用了 并返回一个JsFailure
.
我尝试过的一件事是声明具有所需行为的隐式Format[Option[ObjectId]]
,但它似乎没有被宏生成的Read[PullRequest]
.