问题标签 [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.
scala - 使用 Http4s 的 Circe 编码器和解码器
我正在尝试使用 http4s、circe 和 http4s-circe。
下面我尝试使用 circe 的自动推导功能。
我得到这两个编译器错误的多个实例
json - 如何通过 Circe 修改 json 的值类型
我需要捕获一个 json 的 int 值,并通过某个映射表将其更改为字符串值。我使用 circe,我知道如何在不更改值类型的情况下修改值,例如:
输出是:
但是,实际上,我需要做的是将 int 值更改为某个字符串值,即 1 ->“A”,2 ->“B”,等等,问题是:“修改”方法只接受一个函数返回相同类型的输入值,所以,我不能编码如下:
我的预期输出可能如下所示:
谁能给我一个解决方法(基于Circe)?
json - Circe 和 Scala 的枚举类型
我正试图绕过Circe。
所以,这是我得到的模型:
我想要
a) 将此简单示例编码为 JSON 字符串
b) 将生成的 JSON 映射回 Product 案例类。
我自己的尝试并没有让我走得太远:
导致编译时错误
我不知道为什么会抛出这个异常以及解决方案会是什么样子。也许是枚举类型的用法?但是,我只是猜测。
json - 如何在不消除对象歧义的情况下使用 circe 解码 ADT
假设我有这样的 ADT:
circeDecoder[Event]
中实例的默认泛型派生期望输入 JSON 包含一个包装器对象,该对象指示表示哪个案例类:
这种行为意味着如果两个或多个案例类具有相同的成员名称,我们永远不必担心歧义,但这并不总是我们想要的——有时我们知道展开的编码是明确的,或者我们想通过指定顺序来消除歧义每个案例类都应该尝试,否则我们根本不在乎。
如何Event
在没有包装器的情况下编码和解码我的 ADT(最好不必从头开始编写我的编码器和解码器)?
(这个问题经常出现——例如今天早上在 Gitter 上与 Igor Mazor 的讨论。)
scala - scalaz.Maybe的Circe解码器
这是一个简单的 finch 服务器,使用 circe 作为解码器:
将 更改myValue
为Option
开箱即用的作品,给出与上述代码相同的结果。但是,将其更改为scalaz.Maybe
:
结果是:
Response("HTTP/1.1 Status(400)"): {"message":"body 无法转换为 Test: CNil: El(DownField(myValue),true,false)."}
我应该如何实现所需的编码器/解码器?
json - 如何使用 Circe 在 Scala 中解码 JSON 列表/数组
我有代码片段
其中 Clip 是字符串和数字的简单案例类。传入的 Json 应包含一个带有“项目”数组的 json 对象“播放列表”,其中每个项目都是一个剪辑。所以json应该看起来像
使用上面的代码片段,我得到了编译错误:
我究竟做错了什么?如何使用 circe 为简单项目列表/数组设置解码?
json - Circe:高效解码多级 ADT
我想用 Circe 解码以下 ADT:
如您所见,有一个 parent 类型PaymentType
,它有一些直接继承者和另一个密封 trait family CreditCard
。现在解码是这样完成的:
我不喜欢的是解码器,尤其是当遇到基于信用卡的支付类型时PaymentType
,我需要在完全正常的情况下创建一个额外且不必要的实例。DecodingFailure
我们已经将 99.9% 的 CPU 用于 JSON 处理,而且看起来不太对劲。要么是糟糕的 ADT 设计,要么 Circe 应该有办法更好地处理这个问题。有任何想法吗?
json - 使用 circe 将 Scala None 编码为 JSON 值
假设我有以下案例类需要使用 circe 序列化为 JSON 对象:
现在我需要编码val b = B(None, Some(A("a", Some("aa")), 5)
为 JSON 但我希望能够控制它是否输出为
或者
使用Printer
的dropNullKeys
配置,例如b.asJson.noSpaces.copy(dropNullKeys = true)
将导致None
从输出中省略 s,而将其设置为false
会将 s 编码None
为null
(另请参见此问题)。但是如何在每个字段的基础上控制这个设置呢?
scala - 从递归类型语法实例化类型
鉴于这种递归类型语法:
和实例Seq[Field]
从类型语法实例化具体类是否可行?
IE:
我想Shapeless可以用于此,就像在 json-library Circe中一样。
另请参见使用类型别名描述递归语法
scala - 如何知道一个类可以编码为 Circe Json
假设我有一个将泛型类作为参数的方法。这个泛型必须实现什么才能被 Circe 编码?即我们怎么知道这个类定义了一个编码器?
谢谢