问题标签 [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错误
尝试使用 Play `s Json 库反序列化 json 字符串时出现以下错误。我知道它无法解决重载方法,但我不明白为什么?
上述异常是由(我使用 Play 的 JSON 库 - import play.api.libs
)引起的:
我什至不确定语法的实际含义是什么?我看到它=>
用于匿名函数,其中右侧是参数,左侧是函数表达式。但我不确定异常中的 B 指的是什么以及如何解释这 2 个方法签名?
scala - 使用自定义转换器功能播放 Json 案例类映射器
我有一个看起来像这样的json。
我需要一个使用播放框架的scala案例类的对象映射器。我可以为简单的类编写转换。但是,我有一些自定义功能,这些功能在 getMap 类中给出,它采用 jObject 的实例,JsPath \ "key5"
如下面的代码所示。我该如何实现这一点,因为我的方法似乎无法实现这一点。
json - 多种类型的通用 JSON 序列化
我正在构建一个调用 SOAP 服务的 Play API。这是我们的提供商提供给我们的唯一通信机制。该服务返回一个“包”列表,如下所示:
该服务返回包的通用结构,但是,对于我们的 API 使用者,该方法不起作用,因此,我们的 API 将返回一个包含所有合格包的 JSON,如下所示:
因此,在 Play 中,我们这样定义了我们的模型:
我们知道我们大致有六七种类型。为了清楚起见,我包括三个。请注意,其中一些类型只有“选项”,有些只有“类型”,两个特定情况都有它们。我们使用 traitPackage
来概括我们的构造和每种包的具体案例类。
因此,识别包类型的唯一方法是通过id
和subId
,两者都存在于包元数据中。为了构建我们的结构,我们为每个返回该类型的具体类型创建了一个函数(函数采用泛型PackageDTO
返回一个Package1
对象,函数采用泛型PackageDTO
返回一个Package2
对象等等),返回我们的函数并评估条件以确定类型包装:
所以,我们这样调用我们的转换函数:
我们得到(对于所有包)一个List[Package]
. 我们真正的问题从这里开始......
问题
我们的类型都有所有 JSON 读取器/写入器:PackageMetadata
, PackageType
, PackageOption
, 但是,由于我们无法为 Trait ( Package
) 编写读取器/写入器,因此我们无法将我们的类型转换List[Package]
为所需的 JSON 结构。
问题
是否有任何“通用”方法可以将我们List[Package]
转换为 JSON 结构,在其中我们可以知道每种类型的包?让 (Package, Package, ...) 在我们之前指定的 JSON 结构中获取 (Package1, Package2, ...)。
我认为在 Shapeless 和 HList 中,但我无法弄清楚如何改变使用它的方法。
提前致谢!
json - 从 JsArray 中提取 Json 属性值 ( play )
以下是我的 scala 代码的片段。我正在使用播放 2.4。下面是我的“消息”val 的输出。
输出 :
["{\"id\":1,\"createdAt\":\"2015-11-11T16:18:58.789\",\"collectorId\":4}", "{\"id\":5 ,\"createdAt\":\"2015-11-11T22:35:52.300\",\"collectorId\":5}", "{\"id\":2,\"createdAt\":\"2015 -11-11T16:21:05.377\",\"collectorId\":4}", "{\"id\":3,\"createdAt\":\"2015-11-11T22:35:20.408\" ,\"collectorId\":2}", "{\"id\":4,\"createdAt\":\"2015-11-11T22:35:38.602\",\"collectorId\":4}" ]
列表缓冲区()
如何提取
“收集器 ID”
值作为 Seq[Int]。当我执行代码时,我得到它作为 ListBuffer()。
我发现 JsObject 应该在那里代替 JsArray。
感谢你们的支持。这是我解决问题的方法。
playframework - Play Json - 将嵌套的 Json-Array 与 Specs2 进行比较
使用 Play-Json 和 Specs2,我可以像这样匹配 json-body:
是否有可能忽略 json-arrays 的顺序(递归),而是像对待集合一样对待 json-arrays 的相等性?
json - Scala / Play 2.4 JSON 格式问题
我有以下类(那里简化了一点),它将扩展 JSON 格式的某些对象,这些对象代表具有 ID 字段的数据库级别:
使用 Play 2.3,我可以编写
然后它将与生成的 JSON 中的 ID 字段一起使用。但是,在 Play 2.4 中,我遇到了以下编译时问题:
您应该如何使用 Play 2.4 进行扩展以使这种 JSON 格式正常工作?
scala - Play-Json 将日期时间字符串解析为 Reads[Instant]
我正在尝试执行一个验证规则,即输入 Json 中的时间戳必须使用 format 指定时区DateTimeFormatter.ISO_OFFSET_DATE_TIME
。当输入不正确时,我想返回一条表明格式错误的消息。
此代码段用于以预期格式解析数据:
但是会抛出一个DateTimeParseException
if 格式错误。
如何修复它以返回JsError("Wrong datetime format")
而不是抛出异常?
json - 播放框架 JSON 转换
我打算使用 Play JSON 库来序列化和反序列化与 Json 之间的对象。我有一个这样的案例类:
我有一个服务返回一个 JSON 字符串,它实际上是一个 Seq[MyCaseClass]。我可以把这个字符串放到一个 JsValue 中,但是我怎么能把这个 JsValue 转换成 MyCaseClass 呢?
有什么建议么?
json - 将 List[JsResult[A]] 排序为 JsResult[List[A]]
我正在尝试为条带创建一个 API,其中涉及从 Json 到案例类的大量映射(反之亦然)。我遇到了一个问题,我最终得到了一个List[JsResult[A]]
(这是通过 JObject 列表进行映射并对它们进行一些操作以将它们映射到适当的案例类的结果)。有问题的代码如下
jsResults 的类型为List[JsResult[A]]
,但是要正确组合它的读取,我们需要返回 aJsResult[A]
或 a JsError
。
虽然它可以Json.fromJson[Card](jsObject).get
代替Json.fromJson[Card](jsObject)
,但这样做意味着我们失去了 Play Json 中的累积错误处理(这也意味着我们将错误推送到运行时)