问题标签 [circe]

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 回答
1029 浏览

json - 如何在circe JSON序列化中避免科学记数法

假设我有下一个案例类:

我想将 Person 类的实例序列化为 JSON,所以当我评估asJsonfrom circe 时,我会得到科学计数法的结果:

为什么会发生这种情况?我认为原因是因为默认将字符串BigDecimal自动格式化为科学计数法。

我能做些什么来避免这种情况?可能正在创建另一种类型,它从BigDecimal?toString

0 投票
1 回答
4663 浏览

json - 在 Scala 中使用 Akka Http 和 Circe 解码 JSON

我正在尝试创建 Akka Http REST post 端点,将 JSON 对象映射到定义的案例类

JSON是类型

现在我想将整个 JSON 映射到案例类中定义的 blob 的“json_data”

我知道 .map(_.asJson) 会将 json 映射到 JobEntity,如果不是这样,请纠正我
如何将整个 JSON 映射到 json_data。

0 投票
0 回答
486 浏览

json - 使用 Akka HTTP 将 Scala 案例类映射到 JSON

我正在尝试使用 akka Http 将案例类映射到 JSON

然后用于路由

这会将我的 JSON 映射到 JobEntity 但问题在于我的案例类所在的另一个用例

JsonRaw 需要将 json 作为 blob 传递,为此我正在努力解决如何将整个 json 映射到 case 类而不是其他参数。

0 投票
0 回答
140 浏览

json - 如何在 Circe 中创建排除编码器?

在我的应用程序中,我需要在空时将一些Options 编码为null空,而在空时将其他编码排除。基于Encoderthis 的签名似乎不可能用于特殊类型的 wrapping Option。有没有好的方法来处理这个?

编辑:在其他答案中(例如使用 circe 将 Scala None 编码为 JSON 值)这个问题已经被触及,但没有合适的解决方案。在提供的所有答案中,这是一个必须处理的明确解决方法。我正在寻找一个更通用的解决方案。这最终似乎是 Circe 中缺少的功能,并且(根据@travis-brown)将在不久的将来得到解决。

0 投票
0 回答
510 浏览

json - 如何为 circe 创建依赖于消息中字段的编码器/解码器

我尝试使用 Circle 的用例如下。给定一个 JSON 消息流,我想在操作上匹配并将消息从适当的类型转换为适当的类型。下面的代码显示了所有细节。然而,代码 des 无法编译,因为它需要不同 ResponseMessag:es 的隐式编码器。

为什么使用import io.circe.generic.auto._获取不同ResponseMessage类型的编码器和解码器然后只编写自定义是不够的ResponseMessage?如何更改下面的示例以使测试通过? 有没有办法不必将ResponseOpType 的不同值解码为字符串,我想要一个trait层次结构,但它以错误的格式解码(作为 JSON 对象而不仅仅是纯字符串)?

0 投票
1 回答
390 浏览

json - 使用 circe 预处理点符号样式字段

我有一些 json,其中包含一些字段,这些字段被展平为 bson-ish 格式,如{"foo.bar" : "bash"}. 我想将其转换为以下表示{"foo" : { "bar" : "bash"}},并想知道我会在哪里进行这样的操作。使问题复杂化的是,可能有多个此类字段需要正确合并,例如{"foo.bar" : "a", "foo.bash" : "b", "foo.baz" : "c"}-> {"foo" : { "bar" : "a", "bash" : "b", "baz" : "c"}}

0 投票
1 回答
675 浏览

json - 我的副产品编码不明确

这个问题最近出现了几次,所以我在这里进行常见问题解答。假设我有一些这样的案例类:

我想使用circe和 Shapeless coproducts 将可能是其中任何一个的值编码为 JSON。

乍一看,这看起来不错:

但问题是我永远无法解码包含B元素的副产品,因为任何可以解码为的有效 JSON 文档B也可以解码为A,并且 circe-shapes 提供的副产品解码器按照它们出现在副产品。

如何在我的编码中消除我的副产品元素的歧义?

0 投票
1 回答
1079 浏览

json - 在 http4s 上运行时,使用 Circe 将递归数据结构编码为 Json

我正在构建一个非常简单的服务,它应该返回一个通过递归案例类定义的树状结构:

但由于某种原因,我不断收到以下编译错误:

错误:(24, 70) 找不到参数编码器的隐含值:io.circe.Encoder[Seq[com.ansarada.ds.docviewer.server.Main.Node]]
隐式验证节点编码器:EntityEncoder[Seq[Node]] = jsonEncoderOf[序列[节点]]

错误:(24, 70) 方法 jsonEncoderOf 的参数不足:(隐式编码器:io.circe.Encoder[Seq[com.ansarada.ds.docviewer.server.Main.Node]])org.http4s.EntityEncoder[Seq[ com.ansarada.ds.docviewer.server.Main.Node]]。未指定值参数编码器。隐式验证节点编码器:EntityEncoder[Seq[Node]] = jsonEncoderOf[Seq[Node]]

代码被编译,一旦我删除了一个子元素定义并将一个节点变成一个平面对象:

任何人都可以帮我为嵌套孩子的情况定义正确的 Json 编码器吗?

完整代码:

0 投票
2 回答
279 浏览

scala - 无法为包含具有自定义 Key 类型的 Map 的类型生成可索引

我正在使用 scala 2.11.11、elastic4s 5.4.5 和 elastic4s-circe 5.4.5

这不会编译:

根据文档:

只需在下面为您选择的库添加导入,然后在范围内使用这些隐式,您现在可以将您喜欢的任何类型传递给 doc,并且 Indexable 将自动派生。

使用import io.circe.generic.auto._import com.sksamuel.elastic4s.circe._用于 elastic4s-circe。

我错过了什么?

0 投票
1 回答
1294 浏览

scala - Circe 子类类型的编码器/解码器

鉴于以下 ADT

其中值type用于解码要实例化的实例。

如何自动(或半自动)派生编码器和解码器,以便获得以下行为:

传统的做法

在两个方面失败:

  • 它不序列化值type
  • 不允许MavenGroup("test", Seq("a", "b")).asJson。它只允许第二个选择 where MavenGroupis first cast to GroupRepository

我能想出的最佳解决方案是:

但是它有几个缺点:

  • 编码器是手动指定的。
  • 每个子类型的解码器没有被缓存,因为需要显式传递编码器。