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

0 投票
1 回答
219 浏览

json - Argonaut - 在自定义解码器中返回错误

我正在尝试实现一个 Argonaut JSON 解码器实例,它将 JSON 字符串转换为我的 enum 实例QuestionType。问题是如果字符串无效,返回的 DecodeResult 应该是一个错误,我不知道该怎么做。

我的代码目前如下所示:

QuestionType.fromString(typeName)返回一个Option. 理想情况下,我不想使用get,而是将 转换Option为 a DecodeResult,使用 Option 的内容,或者如果它是None.

我可以使用 的构造函数DecodeResult,但老实说,它的签名让我很困惑(我是 scala 的新手)。似乎它需要一个CursorHistory对象,我不确定我应该在那里传递什么。

0 投票
1 回答
630 浏览

json - 从 Rapture JSON 对象中提取类型、键和值

我正在使用带有 Argonaut 后端的Rapture JSON(如有必要,可以更改)。

给定一个任意 JSON 字符串,我需要将其解析为平面对象(无嵌套 JSON 对象),以理想地获取每个字段的元组列表 (fieldName、fieldType、fieldValue)。

更新:这成为rapture-json 中的一个 github问题

0 投票
2 回答
1182 浏览

scala - 使用 Argonaut 镜头从 JSON 对象的 JSON 数组中提取值

这是我第一次使用 argonauts,对镜头只有一点了解(足以应付)。我花了一段时间试图自己找出问题,但一无所获。

我正在尝试构建一个镜头以从一些 JSON 中获取一个 JsonArray(字符串)。我可以到达具有数组的对象,但不知道从那里做什么。

JSON 看起来像:

示例

到目前为止,我的镜头是这样的:

我也不确定这jArrayPL是否正确。我想做的只是从数组中检索文本。

所以总结一下,任何人都可以帮助我找出如何构建一个查看主题标签的镜头,然后为数组的每个元素查看文本,最后得到一个值作为JsonArray.

更新:

在 Travis 的帮助下,我编译了以下代码:

不幸的是,我得到一个运行时错误:scalaz.Scalaz$.ToEitherOps(Ljava/lang/Object;)Lscalaz/syntax/EitherOps;从行开始val \/-(json) = Parse.parse(rawJSON)

提前致谢!

0 投票
0 回答
956 浏览

json - 使用 Argonaut,如何将 Map(String->Any) 列表转换为 json?

给我

但是,如果我将列表重新定义为

有用。

0 投票
0 回答
96 浏览

scala - 用 argonaut 解码和编码

我想使用 guildWars2 的公共 API 并解码和编码一些信息。我正在寻找 argonauts 的解码和编码,但我不太了解。你能向我解释一下使用 argonaut 的事实吗?谢谢

0 投票
0 回答
73 浏览

json - 使用 Argonaut 使用公共 REST API

我是 Spray 和 Scala 的新手。我目前正在使用激战 2 的公共 REST API。我想消耗一些资源(比如在名为“锦缎螺栓”的项目的交易站上收集所有买卖订单)。我正在使用 Argonaut 进行 JSON 解码。

谁能给我一些关于如何实现这一目标的指示?非常感谢。

0 投票
2 回答
1496 浏览

json - Argonaut:编码/解码对象数组的通用方法

我正在尝试实现一个通用模式,使用 Argonaut 为 Akka HTTP REST 服务生成编组器和解组器,同时处理实体和集合级别的请求和响应。我在实施实体级别时没有问题:

我在尝试为以下内容提供编码器和解码器时遇到问题:

我尝试将以下内容添加到我的同伴中:

但是,我收到以下错误:

我看到这种方法确实不存在,但是否有任何其他通用方法可以生成我的预期结果。我强烈避免使用额外的案例类来描述集合,因为我在我的用例中大量使用反射。

在这一点上,我什至可以使用手动构建的编码器和解码器,但是,我没有找到关于如何使用预期结构构建它的文档。

0 投票
1 回答
1028 浏览

scala - 方法解组的参数不足:(隐式证据$1:spray.httpx.unmarshalling.FromResponseUnmarshaller

我根据这个例子从 SprayJsonSupport 传递到 argonaut 。经过一些代码修改:

我收到了这个错误

错误:(41、42)方法解组的参数不足:(隐式证据$1:spray.httpx.unmarshalling.FromResponseUnmarshaller[GoogleApiResult])spray.http.HttpResponse => GoogleApiResult。未指定值参数evidence$1。val pipeline = sendReceive ~> unmarshal[GoogleApiResult] ^

我看一下 unmarshall 方法:

如何添加隐式参数?为什么我在 sprayJsonSupport 上没有出现这样的错误?

孔代码:

0 投票
1 回答
402 浏览

json - 使用 Argonaut 解析 JSON 流

我正在使用 Argonaut 解析来自远程 JSON 提供程序的对象。API 有两种类型的端点,一种是 URL 上的传统 REST 请求和单个 JSON 对象的响应。我能够在这种类型的端点上使用 Argonaut 轻松解析复杂的 JSON 返回对象。

我的问题是提供者的流端点,它从给定端点的一组有界 JSON 中返回随机 JSON 对象。这些对象按照它们在站点上出现的顺序返回,并且可以随时返回大约 20 个不同对象中的任何一个。

通过 API 工作,我找不到使用 Argonaut 处理此问题的方法。API 似乎都需要类型参数化,这在无法预测下一个对象的类型的环境中是很困难的。一种选择是根据每个 JSON 块中的前几个字符分派到不同的编解码器,但这会破坏将 JSON 字符串发送到解析器并获得对象作为回报的目标。

到目前为止,我能找到的最好的方法是让所有顶级案例类扩展一个空trait

不幸的是,ModelSubclassA两者ModelSubclassB都与其他案例类有几个关联,虽然这个示例可以编译,但在尝试解析这些子类型时它会在运行时失败。总之,将有几十个案例类构成返回数据的层次结构。

我也尝试过用for理解来构建它,但也没有运气。

谁能在这里建议更好的模式?

更新

以下似乎具有更具可扩展性的模式,但类型不合作:

错误:(10, 17) 类型不匹配;找到:argonaut.DecodeResult[ModelSubclassB] 需要:argonaut.DecodeResult[Product with Serializable with Model] 注意:ModelSubclassB <: Product with Serializable with Model,但类 DecodeResult 在类型 A 中是不变的。您可能希望将 A 定义为 +A . (SLS 4.5) ||| c.as[ModelSubclassB]).asInstanceOf[DecodeResult[Model]] ^

所以我开始查看源代码,并意识到6.2-M1 版本中的错误所暗示的定义DecodeResult已更改为包含。+A不幸的是,升级到该版本将所有Model子类编解码器都变成了模棱两可的隐式,这是有道理的。

啊...

0 投票
2 回答
2025 浏览

scala - 使用 Play 框架解析递归嵌套的 Json 结构

我们正在使用 Play 框架 2.3.4。我们从其中一个 API 对第三方服务进行 Web 服务调用 - 返回响应的结构是动态的并且可能会发生变化。只有响应 JSON 中的静态子结构是特定元素并嵌套在其中。例如

我们不知道响应结构会是什么样子,但我们唯一知道的是响应中的某处会有“桶”嵌套元素,并且您可以看到顶层内还有其他嵌套的“桶”“桶”元素。另请注意,buckets数组内部的结构也不清楚,如果会有另一个子存储桶,则肯定子存储桶必须位于父存储桶内的某个bucket位置 - 这样模式是一致的。

解析这种递归结构并递归填充以下Bucket类的最佳方法是什么?

首先我想

但这不会带来buckets递归而不是正确的遍历方式。

有任何想法吗?