问题标签 [argonaut]
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 - 为播放框架 http 响应创建 Writeable[Argonaut.Json]
我正在尝试通过像这样使用plays json库来更改此功能的实现
像这样使用 argonaut
但我明白了
无法将 argonaut.Json 的实例写入 HTTP 响应。尝试定义一个 Writeable[argonaut.Json]
对于 Status{} 块和 Ok{} 块,我在这里得到了这个问题的有用答案https://groups.google.com/forum/#!topic/play-framework/vBMf72a10Zc
所以我尝试像这样创建隐式转换
我认为将 json 对象转换为字符串并将其提供给 codec.encode 应该将其转换为 Array[Bytes] 但我得到了
无法猜测用于 argonaut.Json 的内容类型。尝试定义一个 ContentTypeOf[argonaut.Json]
jsval.nospaces.getBytes 也返回 Array[Bytes] 所以我不知道这是否可以用来提供帮助
所以虽然我认为最后一条错误消息意味着我只需要告诉 play 它应该使用内容类型 application.json 我也觉得这可能是一个不必要的兔子洞,应该有一个更简单的方法来做到这一点。
编辑:它不是一个兔子洞,因为定义 contentType 至少可以编译,但我仍然想知道这是否正确
scala - 使用 Argonaut 在 scala 中将 json 解码为 List[A]
我有一个类型 Wf 是
我有以下定义 argonaut 解码器的隐式函数
这是我要解码的 json
如果我做
我得到了预期的一些(Wf)
如果我做
我得到零。如果我向隐式解码器添加断点,它会在我只要求 Wf 时进入 for 理解。当我要求 List[Wf] 时,它甚至似乎都没有进入理解
如果我做
我明白了
我究竟做错了什么?
json - Scala argonaut 将 jEmtpyObject 编码为“false”而不是“null”
我正在处理我直接控制之外的一些代码,我需要对选项 [Thing] 进行编码,如果 Thing 存在,则情况正常,但是 None 情况必须返回“false”而不是 null。这可以轻松完成吗?我正在查看文档,但没有取得太大成功。
我的代码如下所示:
和 BiggerThing 的等价物,json 需要看起来像:
对于一些:
/li>对于无:
/li>
但目前 None 案例给出:
我如何让它返回false?有人可以指出我正确的方向吗?
干杯
json - 用于非递归案例类的简单 Scala JSON 库
我有仅包含字符串或字符串集合的案例类,并且希望将它们转换为具有相应字段名称的 JSON 对象以及一个表示类型的附加字段。
大多数库对案例类都有特殊支持,但似乎从来没有一种方法可以将其与附加类型字段结合使用来消除同构案例的歧义,我不得不退回到更底层的描述。
到目前为止,我已经尝试过 spray-json 和 argonaut,我得到的样板文件比我的简单使用场景所证明的要多得多:
对于 argonaut,我什至无法弄清楚如何匹配类型字段,因为DecodeResult
没有过滤方法:
是否有另一个库可以更好地处理这个问题,或者我忽略的其中一个库中有一些功能会显着减少样板文件?
scala - 使用 Argonaut 映射 JSON 数组
我很难通过 Argonaut 文档,所以我想我只是要求一个简单的例子。
我可以将光标移至数组:
但是然后呢?我在正确的轨道上吗?我什至应该为此使用游标吗?
编辑 - 我猜这是一些进展。我为列表编写了一个解码器:
编辑 - 慢慢开始把它放在一起......
编辑 - 所以我想到目前为止我最好的解决方案是:
不过感觉有点啰嗦。
json - 特征类型参数的隐式编码器
我想List[E]
使用 argonaut lib 将类型字段编码为 json。
然后我有一个StringMsg
案例类:
argonaut 库定义了JsonIdentity[J]
trait:
当我创建一个新实例StringMsg
并调用该send()
方法时,出现以下错误:
找不到参数 e 的隐式值:argonaut.EncodeJson[List[E]]
json - 使用 Argonaut 进行 Scalaz 验证
我有一个案例类和伴随对象:
我想使用 Argonaut 解析一些 JSON 并返回一个 Person 或一些错误,作为一个列表。所以我需要:
- 从字符串中读取 JSON,并验证字符串的格式是否正确
- 将 JSON 解码为 Person 或错误字符串列表。
我想以可以变成更多 JSON 的形式返回错误,例如:
我首先尝试使用 Argonauts decodeValidation 方法,该方法返回一个 Validation[String, X]。不幸的是,我需要一个错误列表。
有什么建议么?
scala - Scala - 将实现公共 TypeClass 的单独类型视为相同
我有两个案例类,我们称它们case class User
为 & case class Ticket
。这两个案例类都实现了成为相同成员所需的操作TypeClass
,在本例中是 Argonaut 的EncodeJson
。
是否可以在不创建它们都扩展的空标记类型的情况下将这两种不同的类型视为相同?
为了具体化,我们有两个单独的函数返回这些案例类:
我想组合这两个服务,以便它们返回相同的类型,在这种情况下argonaut.Json
,但编译器对隐式转换的响应是“LOLNO”
有任何想法吗?谢谢!
scala - 如何为所有 Java 枚举编写 Scala Argonaut 编解码器
我有一个使用一堆 Java 代码的 Scala 项目,例如这个 Java 源代码:
然后我有一堆 Scala 案例类,我使用 Argonaut 将它们序列化到 JSON 和从 JSON 序列化,如下所示:
很好,现在我想编写一个使用 Java 枚举的 Scala 案例类,如下所示:
这将产生编译错误,因为 Category 枚举没有隐式编解码器。
我想我可以通过执行以下操作来编写自己的编解码器专门用于处理 Category 枚举:
但我想知道是否有一种方法可以编写一个能够自动处理任何 Java 枚举的编解码器。
scala - 在设计 scala 库时我们需要避免反射吗?
举argonaut
个例子,在我们的一些项目中,当需要处理 JSON 时,人们会为此使用 argonaut,并对字段进行硬编码,例如:
如果有很大的案例类,列表会很长:
我的问题是为什么我们需要对它们进行硬编码,而不是通过反射来获取字段?
是否有任何技术问题,或者人们在设计 Scala 库时不喜欢使用反射?