问题标签 [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.
json - Circe:解码具有不同可能内容类型的容器类型
我的目标是将 JSON 转换为以下模型:
- 有一种容器类型,其结构看起来总是相同的。
- 容器的
content
类型由看起来完全不同的类型表示(关于属性的数量和类型)。但是,所有内容类型在编译时都是已知的,并实现了密封特征。 - 容器的
typeId
属性表示内容类型。例如,具有类型等的N
均值的值。content
ContentTypeN
- JSON 结构看起来与您期望的完全一样,并直接映射到上面显示的 Scala 类型。
Container[A <: Content]
(顺便说一句:如果这是一个更优雅的解决方案,我愿意将容器类型更改为)。
用circe解码它的好方法是什么?我猜在这种情况下自动解码不起作用。
编辑:json结构的文档将内容字段描述为?mixed (object, integer, bool)
,因此它也可以是简单的Int
或Boolean
代替案例类对象。但是现在可以忽略这两种类型(尽管有一个解决方案会很好)。
scala - 使用 scala meta 和 quasiquotes 定义隐式编码器
我正在尝试使用 Circe 创建一个隐式编码器。然而,这个编码器将使用注释创建,因此我使用的是 Scalameta。这是我的代码。但是,编译器抱怨在 quasiquotes 中有一个覆盖语句。
构建文件如下:
结果我仍然得到: 无法扩展宏注释(最常见的原因是您需要启用宏天堂插件;另一种可能性是您尝试在定义它的同一编译运行中使用宏注释)
scala - JSON 到案例类派生如何在 Scala 中工作?
例如,在 argonaut-shapeless 中。这是如何运作的?
我有兴趣将相同的原则应用于表示 Spark 作业的输入。例如给定
我希望废除写作的样板
json - 在 Circe 中执行“至少应存在两个字段中的一个”规则
我正在编写一个 Circe 解析器,其中架构要求至少设置两个字段之一。这是非常具体的,它似乎不是一种使用 Circe API 轻松完成的方法。
让我们调用我们的字段text
和html
.
我已经尝试创建一个类,让我们调用它Content
,将它作为单个参数添加到通用模型中,如果它的字段(文本和 html)都为 None,则在构造函数中引发异常。问题是如何定义解码器,因为如果我做这样的事情
无论如何,它都要求两个字段都存在。
我想要的是有一个解码器,如果该字段丢失,则将 None 传递给,Content.apply
但我认为这不是预期的行为。
否则应该有一个完全不同的解决方案,但我想不出一个。
谢谢
java - 在 Circe 中处理具有不同数据类型的 json
就我而言,相同的 json 字段可能有不同的数据类型。例子:
或者
如何处理此案?我知道它可以由parse
自定义编码器处理或使用,但这是一个非常复杂的 json 文本,有没有办法在不重写整个解码器的情况下解决这个问题(例如,只需“告诉”解码器将所有内容转换Int
为现场) ?String
need_exp
scala - Scala 宏编译时间
处理一个使用 circe、enumeratum 和 shapeless 等库的 scala 项目
我们定义了一些枚举,即 Region;EntityType 和 EntityAction 例如
我们还有一个权限模型定义为
我们还有一个 UserEntityModel(以 json 格式保存在我们的数据存储中)和一个作为 http 响应的一部分返回的 UserModel
EntityKey 包含 Region 枚举,省略的字段是非枚举类型
如果没有来自 UserEntity 和 User 模型的权限和 revokedPermissions,clean compile
时间不到 3 分钟。包含这些字段后,编译器会遇到
我们通过定义一个 .sbtopts 来解决它,并使用它的一些变体,因为它代表当前的 .sbtopts 是
玩弄 diff Xss 值以及指定 -mem ,似乎并没有造成太大的差异。
但是,包含这些字段后,clean compile
平均时间现在几乎是 7 分钟(因为在一些地方使用了用户实体)
所有迹象都指向宏编译。我们正在使用自动推导。有没有办法保持样板免费并保持枚举的类型安全但减少编译时间。
当前版本是
在更新到最新版本的库和 scala 2.12.3 时,编译时间跳到近 20 分钟
尝试按照调试慢编译时间的一些步骤进行操作
据我所知,它是打字机阶段
scala - 具有隐式转换的类型类中的堆栈溢出
我做了一个泛型DynamoFormat
,Scanamo
它将任何具有Circe
'sEncoder
并Decoder
定义为 Json 字符串的对象放入数据库中。
然后我添加了一个隐式转换(到相同的object JsonDynamoFormat
)来自动提供这些格式化程序。
当我导入它时,编译器会成功解析格式化程序,但是在运行时我得到一个堆栈溢出JsonDynamoFormat
,其中调用jsonToFormat
和forType
交替无限:
我真的不明白这里发生了什么。任何人都可以对此有所了解吗?
circe - 过滤对象数组以使用 circe 修改 json
我正在评估 Circe,但不知道如何使用数组过滤器来转换 JSON。我在其网站和 API 文档上阅读了该指南,但仍然没有任何线索。非常感谢帮助。
样本数据:
任务:
如何使用员工过滤器将 JSON 转换为另一个 JSON,例如所有年龄超过 50 岁的员工?
出于某种原因,如果您询问,我无法在生成 JSON 之前从数据源中过滤。
谢谢
json - 在Scala circe中按字段值将json列表解析为两种列表类型
我得到了(示例)json:
元素列表总是包含有 2 种可能性的对象:
- 键入“ nodeX ”和属性:id、a和b。
- 输入“ nodeY ”和属性:id和c。
我想获得给定类的两个列表:
我已经尝试过 circe(Scala 库)将此 json 解析为类:
但不幸的是,我得到了带有可选字段的对象元素列表。
目前我正在使用它作为解决方法:
我正在寻找更好的解决方案,更快的解决方案,因为此 json 中的列表包含不少于 70k 的元素。
提前致谢 :)
scala - Circe 从 JSON 中提取列表
我有以下失败(0 不等于 3),我不知道为什么。有什么想法吗?