gpt4 book ai didi

json - 使用 Scala Argonaut 解析 JSON 数组

转载 作者:行者123 更新时间:2023-12-04 12:08:14 26 4
gpt4 key购买 nike

我正在使用 Scala 和 Argonaut,试图解析以下 JSON:

[
{
"name": "apple",
"type": "fruit",
"size": 3
},
{
"name": "jam",
"type": "condiment",
"size": 5
},
{
"name": "beef",
"type": "meat",
"size": 1
}
]

并努力弄清楚如何迭代并将值提取到 List[MyType] 中。哪里 MyType将具有名称、类型和大小属性。

我很快会发布更具体的代码(我尝试了很多东西),但基本上我想了解游标的工作原理,以及如何遍历数组等。我尝试使用 \\ (downArray) 移动到数组的头部,然后 :->-遍历数组,然后 --\ (downField) 不可用(至少 IntelliJ 不这么认为)。
所以问题是我该怎么做:
  • 导航到数组
  • 遍历数组(知道什么时候完成)
  • 为每个字段提取字符串、整数等值 - jdecode[String] ? as[String] ?
  • 最佳答案

    最简单的方法是为 MyType 定义一个编解码器。 .然后编译器会很高兴地为 List[MyType] 构造一个解码器。等。我将在这里使用一个普通类(不是案例类)来说明发生了什么:

    class MyType(val name: String, val tpe: String, val size: Int)

    import argonaut._, Argonaut._

    implicit def MyTypeCodec: CodecJson[MyType] = codec3(
    (name: String, tpe: String, size: Int) => new MyType(name, tpe, size),
    (myType: MyType) => (myType.name, myType.tpe, myType.size)
    )("name", "type", "size")
    codec3需要两个参数列表。第一个有两个参数,允许你告诉如何创建 MyType 的实例。来自 Tuple3反之亦然。第二个参数列表允许您指定字段的名称。

    现在您可以编写如下内容(如果 json 是您的字符串):
    Parse.decodeValidation[List[MyType]](json)

    你已经完成了。

    关于json - 使用 Scala Argonaut 解析 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483944/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com