问题标签 [spray-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 - 如何让“asJson”方法成为使用 spray-json 的案例类的一部分?
我希望能够使用 spray-json 在 Scala 中创建案例类,但asJson
在类中定义一个方法,但我似乎无法弄清楚如何。例如,我希望能够做到这一点:
创建一个隐式 JSON 转换器很容易:
但据我所知,这只能在课外进行。我很想找到一种声明 JSON 格式并在类本身中转换为 JSON 的方法。
scala - Scala 将价值带入隐式作用域而不命名它
使用spray-json时,我需要为要序列化JsonFormat[A]
的每个域类型引入一个隐式范围。A
推荐的方法是创建一个自定义对象,将所有隐式作为字段:
我的应用程序有很多域类型,其中一些有很长的名称。我MyJsonProtocol
的变得冗长且难以阅读:
长 val 名称有各种问题:
- 他们觉得多余(名字从未被读过)
- 他们让我的台词很长
- 它们引入了格式名称与格式类型不匹配的复制/粘贴风险
- 他们使 RHS 值不对齐,这隐藏了这里的常见模式
有没有办法在不命名的情况下将对象带入隐式范围?这样的事情会更整洁:
...但 Scala 不允许多个名为“_”的字段。
有没有办法将这些格式带入隐式范围而不用全部命名?还有另一种使用spray-json的方法可以避免这个问题吗?
scala - 未找到隐式 FromRequestUnmarsharell
我正在尝试将我的域对象用作请求/响应主体参数。我正在使用喷雾路由并as[T]
解组对象。但我不断地得到could not find implicit value for parameter um: spray.httpx.unmarshalling.FromRequestUnmarshaller
。尽管我已经手动将隐式解组器添加到伴随对象中,但我得到了同样的错误。我不知道出了什么问题。这个 JSON 序列化器/反序列化器用于我编写的 Event,因为我需要序列化 joda DateTime 对象。
json - Spray.io 验证 json 指令
使用 Spray.IO,我正在构建一个接收 JSON 输入的服务。我想通过检查它的一些字段来验证 JSON 有效负载。
我对验证 JSON 模式或解析错误不感兴趣,而是检查字段值,而不是像字段的真实类型一样(即:整数 vs 浮点数)
我对使用 Scala require不感兴趣,因为这会引发异常,并且无法通知客户端在单个请求中发现的所有验证错误。
对此是否有内置指令/拒绝?
我在 Play ( http://www.playframework.com/documentation/2.2.1/ScalaJsonRequests ) 中看到过类似的东西,如果没有内置任何东西,我将如何自己构建一些东西?
json - Scala(spray)json序列化和反序列化问题
我正在为我的案例对象使用我自己的 JSON 序列化器和反序列化器的隐式实现
我的案例类看起来像(它只是一个代码片段)
我想写我自己的ser。和沙漠。用于 MyTrait 的 JSON
现在我的测试因抛出 DeserializationException 而失败:
显然json.asJsObject.getFields("value")
无法匹配到Seq(JsString("TEST"))
。也许这与使用特征有关?但我在官方 spray-json 网站https://github.com/spray/spray-json#providing-jsonformats-for-other-types上找到了示例
任何想法如何正确匹配 JsObject 中的字段?
谢谢!最好的
scala - (Un)marshall JSON with named root for Ember Data 在 Spray 上使用 Scala 案例类
我正在编写一个 RESTful 接口,我想为 Ember 数据编组和解组 JSON。问题是 Ember Data 想要实体名称,而我尝试过的两个库,spray-json 和 json4s,似乎并不容易做到这一点。
所需的 Ember 数据格式
当前默认格式:
这应该来自一个案例类:
我确实使用以下自定义代码运行它:
这段代码看起来非常脆弱和丑陋,所有的asInstanceOf
and (0)
.
鉴于我正在使用 Scala 编写 Spray 什么是获得命名根 JSON 输出的好方法?我很高兴使用任何与 Spray 完美集成且性能合理的 JSON 库来做到这一点。
json - 喷 json 编组
我正在寻求创建一个 JSON API,其中一些模型可以很好地概括。我是 Spray 的新手,所以我用一个过于简化的例子开始了一个尖峰。
但是我无法弄清楚下面的代码发生了什么......
我都进口了
- 我的自定义隐含和
- spray.httpx.SprayJsonSupport._
据我了解,这是我必须做的,以便拥有可以从 JsonFormat 转换为 Marshaller 的隐式范围。
编译器错误:
TestService.scala:15:找不到参数 um 的隐式值:spray.httpx.unmarshalling.FromRequestUnmarshaller[my.company.Test[my.company.X]]
代码:
我将不胜感激任何帮助。提前致谢。
解决了
解决方案是(正如@jrudolp 建议的那样):
- 在文件顶部移动隐式定义(令人惊讶)
- 创建 RootJsonFormat 而不是 JsonFormat。
scala - Spray-json JsNumber BigDecimal isValid* 奇怪
有人可以向我解释一下吗:
我正在使用带有 Scala 2.10.3 的 spray-json 1.2.6,这些是我的 libraryDependencies:
“io.spray” %% “spray-json” % “1.2.6”
谢谢,格雷加
scala - 使用 spray-json 难以序列化 immutable.Map
为交叉发帖提前致歉:我将这个问题提交给了喷子用户列表,但该列表似乎已被审核,并且似乎没有人在家。希望 SO 是一个更好的场所。
我很难用spray-json
. 例如,一个简单的immutable.Map[String,String]
工作正常,但一个immutable.Map[String,Foo]
, where Foo
is 我定义的案例类没有。文档给我留下的印象是我只需要定义一个JsonFormat
forFoo
就可以了。
这是一些示例代码:
这会产生以下编译器错误:
我难住了。
scala - 喷雾客户端 - 将具有意外内容类型的响应视为应用程序/json?
当我尝试获取这样的亚马逊身份数据时
使用适当的案例类和格式化程序,我收到以下异常
不支持的内容类型(预期的“应用程序/json”)
因为亚马逊将他们的回复标记为文本/纯内容类型。他们也不关心Accept标头参数。有没有一种简单的方法可以告诉 spray-json 在解组时忽略这一点?