问题标签 [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.

0 投票
1 回答
4053 浏览

scala - 如何让“asJson”方法成为使用 spray-json 的案例类的一部分?

我希望能够使用 spray-json 在 Scala 中创建案例类,但asJson在类中定义一个方法,但我似乎无法弄清楚如何。例如,我希望能够做到这一点:

创建一个隐式 JSON 转换器很容易:

但据我所知,这只能在课外进行。我很想找到一种声明 JSON 格式在类本身中转换为 JSON 的方法。

0 投票
1 回答
342 浏览

scala - Scala 将价值带入隐式作用域而不命名它

使用spray-json时,我需要为要序列化JsonFormat[A]的每个域类型引入一个隐式范围。A

推荐的方法是创建一个自定义对象,将所有隐式作为字段:

我的应用程序有很多域类型,其中一些有很长的名称。我MyJsonProtocol的变得冗长且难以阅读:

长 val 名称有各种问题:

  • 他们觉得多余(名字从未被读过)
  • 他们让我的台词很长
  • 它们引入了格式名称与格式类型不匹配的复制/粘贴风险
  • 他们使 RHS 值不对齐,这隐藏了这里的常见模式

有没有办法在不命名的情况下将对象带入隐式范围?这样的事情会更整洁:

...但 Scala 不允许多个名为“_”的字段。

有没有办法将这些格式带入隐式范围而不用全部命名?还有另一种使用spray-json的方法可以避免这个问题吗?

0 投票
1 回答
1583 浏览

scala - 未找到隐式 FromRequestUnmarsharell

我正在尝试将我的域对象用作请求/响应主体参数。我正在使用喷雾路由并as[T]解组对象。但我不断地得到could not find implicit value for parameter um: spray.httpx.unmarshalling.FromRequestUnmarshaller。尽管我已经手动将隐式解组器添加到伴随对象中,但我得到了同样的错误。我不知道出了什么问题。这个 JSON 序列化器/反序列化器用于我编写的 Event,因为我需要序列化 ​​joda DateTime 对象。

0 投票
2 回答
1367 浏览

json - Spray.io 验证 json 指令

使用 Spray.IO,我正在构建一个接收 JSON 输入的服务。我想通过检查它的一些字段来验证 JSON 有效负载。

我对验证 JSON 模式或解析错误不感兴趣,而是检查字段值,而不是像字段的真实类型一样(即:整数 vs 浮点数)

我对使用 Scala require不感兴趣,因为这会引发异常,并且无法通知客户端在单个请求中发现的所有验证错误。

对此是否有内置指令/拒绝?

我在 Play ( http://www.playframework.com/documentation/2.2.1/ScalaJsonRequests ) 中看到过类似的东西,如果没有内置任何东西,我将如何自己构建一些东西?

0 投票
1 回答
4634 浏览

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 中的字段?

谢谢!最好的

0 投票
2 回答
323 浏览

scala - (Un)marshall JSON with named root for Ember Data 在 Spray 上使用 Scala 案例类

我正在编写一个 RESTful 接口,我想为 Ember 数据编组和解组 JSON。问题是 Ember Data 想要实体名称,而我尝试过的两个库,spray-json 和 json4s,似乎并不容易做到这一点。

所需的 Ember 数据格式

当前默认格式:

这应该来自一个案例类:

我确实使用以下自定义代码运行它:

这段代码看起来非常脆弱和丑陋,所有的asInstanceOfand (0).

鉴于我正在使用 Scala 编写 Spray 什么是获得命名根 JSON 输出的好方法?我很高兴使用任何与 Spray 完美集成且性能合理的 JSON 库来做到这一点。

0 投票
0 回答
3032 浏览

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。
0 投票
1 回答
577 浏览

scala - Spray-json JsNumber BigDecimal isValid* 奇怪

有人可以向我解释一下吗:

我正在使用带有 Scala 2.10.3 的 spray-json 1.2.6,这些是我的 libraryDependencies:

“io.spray” %% “spray-json” % “1.2.6”

谢谢,格雷加

0 投票
3 回答
3115 浏览

scala - 使用 spray-json 难以序列化 immutable.Map

为交叉发帖提前致歉:我将这个问题提交给了喷子用户列表,但该列表似乎已被审核,并且似乎没有人在家。希望 SO 是一个更好的场所。

我很难用spray-json. 例如,一个简单的immutable.Map[String,String]工作正常,但一个immutable.Map[String,Foo], where Foois 我定义的案例类没有。文档给我留下的印象是我只需要定义一个JsonFormatforFoo就可以了。

这是一些示例代码:

这会产生以下编译器错误:

我难住了。

0 投票
3 回答
1837 浏览

scala - 喷雾客户端 - 将具有意外内容类型的响应视为应用程序/json?

当我尝试获取这样的亚马逊身份数据时

使用适当的案例类和格式化程序,我收到以下异常

不支持的内容类型(预期的“应用程序/json”)

因为亚马逊将他们的回复标记为文本/纯内容类型。他们也不关心Accept标头参数。有没有一种简单的方法可以告诉 spray-json 在解组时忽略这一点?