问题标签 [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 - 创建一个 json 对象并向其添加新的键、值对
我有一个形式为 scala 的地图<String, Any>
。我的目标是遍历地图的所有键并创建一个由所有这些k,v
对组成的新 json 对象。我正在使用 json 库的播放框架。
我试过这个:
然而,Json.toJson 返回一个 JsonNode,而它需要一个 JsValue。我已经查看了这个SO Question来添加新项目。
问题一:如何将 JsonNode 转换为 JsValue
问题 2:这在 scala 中是一个糟糕的实现。我正在使用 var。如何转换相同的逻辑以便使用 val。我对函数式编程特别陌生,因此很难摆脱通常的迭代循环。
scala - 将验证约束与解组分离
我遇到过这篇文章,它演示了新的播放验证 API 与 shapeless 的结合。我无法重新创建代码片段(可能是因为我不知道从哪里导入)。
如何正确创建Get
实例?正如文章所暗示的,这种方法与无形镜片有什么关系?
json - 播放 json 变形金刚地图可选字段
我有以下播放框架 2.3 json 转换器
所以这:
应该转变为:
我的问题是在源 json 模型中,line4 是可选的,所以我只想将它映射到 address.line4 可选。所以:
也应该转变为:
我不知道如何使用这些变压器来做到这一点,并且经过大量谷歌搜索后找不到类似的问题。
谢谢!网卡
json - Play-json:更新数组内的对象属性时出错
我正在使用 play-json 库来操作我的 json 文件。我已经关注了这个官方文档,一切正常,但他们没有告诉我们何时要更新数组中对象的值,所以我正在尝试我自己的示例。
IE
在上面的示例中,我试图更新“key123”的值,但一次又一次地收到此错误,只是无法找出我在哪里做错了:(
线程“主”java.util.NoSuchElementException 中的异常:play.api.libs.json.JsError.get (JsResult.scala:14) 处的 JsError.get(JsResult.scala:14) at play.api.libs.json.JsError.get(JsResult.scala :13) 在 Refactor.authPage(Refactor.scala:73) 在 Builder$.main(Builder.scala:36) 在 Builder.main(Builder.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun。 reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 com.intellij.rt .execution.application.AppMain.main(AppMain.java:140)
这是我的代码。任何形式的帮助将不胜感激。
json - 获取案例类的具体类型
我有这个:
稍后,我将这些块分组到 Seq 中,如下所示:
而且我想将每个块序列化为 Json(使用 Play)。我这样做如下:
“序列化块”的定义:
我有每个具体块(标题,正文......)的读者和作家,但是,正如你所看到的,当我在 Seq Scala 中混合这些块时,将其视为通用类型块,因此我正在做模式匹配每个可能的块类型(隐式转换?)。如果我只是在 Map Play 中调用“Json.toJson”,则会抱怨找不到“块”类型的读取器/写入器。
“块”是相对较大的 JSON 的片段。我正在获取 JSON,我将其拆分为合格的“块”,然后将其作为字符串保存在数据库中:
“大” JSON:
块
我的问题是:有没有办法在不重复 n 次“块:类型”模式的情况下进行序列化?我的意思是:有没有办法获得该块的具体类型(知道 Seq 被键入为超类“块”而不是该块的“具体”类型)?
编辑
我为每个块都有一个读取器/写入器,如下所示:
编辑2:
Shapeless是解决这个问题的方法吗?
编辑 3:
正如 Andrzej Jozwik 所说:“param1”和“param2”是我在这里用来定义我的 JSON 结构的“通配符”参数。每个块都有不同的参数。
playframework - 播放 json 转换器。JsObject 到 JsObject
我期待 JsObject 在请求正文中,我想提取和验证必填字段
请求正文:
我的阅读:
我的控制器:
这段代码有效,但它的样板代码太多......我的意思是我的阅读。我认为这段代码会起作用:
但它不编译。我认为有一个很好的解决方案
json - 使用 play-json 转换 JsArray
json 转换器中的大多数示例都是关于 JsObject 的。我尝试转换 JsArray 但收到此错误
错误
json - Scalaz 验证的错误累积
我有一个复杂的 JSON,它保存在数据库中。它的复杂性被“隔离”在“块”中,如下所示:
整个 JSON:
在数据库中,每个块都被单独存储和处理:
持久块
每个块都有业务意义,因此,每个块都映射到一个案例类。我正在构建一个存储、更新和检索此 JSON 结构的 Play API,并且我想验证是否有人为了完整性而更改了它的数据。
我正在对每个块进行检索(解析和验证),如下所示:
案例类:
使用当前结构,如果某些字段被更改并且与它定义的类型不匹配,Play 会抛出此异常:
[NoSuchElementException:JsError.get]
因此,我想使用 Scalaz 和 Validation 构建一个累积错误结构,以捕获所有可能的解析和验证错误。我已经看到了这个和这个,所以我以这种方式对验证进行了编码:
请注意,我使用的是应用函子<*>
,因为Request
有 20 个字段(使用该语法构建括号混乱),|@|
应用函子仅适用于最多 12 个参数的案例类。
该代码适用于快乐路径,但是,当我修改某些字段时,Play 会引发稍后描述的执行异常。
问题:我想累积 Play 在解析每个块时可以检测到的所有可能的结构错误。我怎样才能做到这一点?
注意:如果在某种程度上Shapeless与此有关,我愿意使用它(我已经在使用它)。
scala - 使用 play-json 库对自定义 scala 对象进行 Scala 反序列化
我的 ScalaTest 在尝试将 JSON 字符串解析为自定义 Scala 对象时中断。我正在使用 Play-Json 库进行 [反] 序列化。序列化工作正常,但在 Blah 类上运行单元测试时反序列化中断。该测试调用 fromJsonString() 方法和 Im 使用 ScalaTest 库进行单元测试。在这里感谢一些帮助。
异常跟踪:(完整跟踪 - http://pasted.co/e627b1ee)
Scala 对象定义:
我的 SBT 文件:
json - 使用 Play 2.3 和 Scala 2.11.1 将具有枚举属性的类转换为 Json 时出错
我有一个案例类User
,Enum
它的属性之一是
我想将此类转换为Json
使用Play-Json
api 但我收到错误这里是我的用户类
用户状态
它在用户类中给了我以下错误
没有可用的 UserStatus 隐式格式
在这条线上
并在 UserStatus(enum) 中出现以下错误
未找到 unapply 函数
在这条线上
请帮我!