首页 >后端开发 >Golang >如何在 Go 中解析 JSON 数组?

如何在 Go 中解析 JSON 数组?

Linda Hamilton
Linda Hamilton原创
2024-11-19 20:23:03533浏览

How do I parse a JSON array in Go?

如何在 Go 中解析 JSON 数组

在 Go 中,encoding/json 包提供了将 JSON 数据解组为 Go 结构的支持。要解析 JSON 数组,可以使用以下步骤:

  1. 定义一个 Go 结构体: 定义一个表示 JSON 中各个元素形状的结构体大批。例如,如果 JSON 数组包含具有名称和价格字段的对象,则可以定义以下结构体:

    type PublicKey struct {
        Name string
        Price string
    }

    注意: 确保结构体中的字段名称与字段匹配JSON 数组中的名称。

  2. 创建结构体的切片:创建定义的结构类型的切片来保存已解析的数据:

    var keys []PublicKey
  3. 解组 JSON: 使用 json.Unmarshal() 函数解组JSON 数组放入结构体切片中:

    err := json.Unmarshal([]byte(jsonStr), &keys)

    其中 jsonStr 是 JSON要解析的数据。

  4. 处理任何错误:检查解组过程中遇到的任何错误。如果发生错误,则会存储在 err 变量中:

    if err != nil {
        // Handle the error
    }
  5. 访问解析后的数据: 一旦 JSON 数组解析完毕,就可以访问切片的各个元素结构体:

    for _, key := range keys {
        fmt.Println(key.Name, key.Price)
    }

示例:

以下代码演示了如何使用上述步骤解析 JSON 数组:

package main

import (
    "encoding/json"
    "fmt"
)

type PublicKey struct {
    Name string
    Price string
}

func main() {
    jsonStr := `[{"name":"Galaxy Nexus", "price":"3460.00"},{"name":"Galaxy Nexus", "price":"3460.00"}]`

    var keys []PublicKey
    err := json.Unmarshal([]byte(jsonStr), &keys)
    if err == nil {
        for _, key := range keys {
            fmt.Println(key.Name, key.Price)
        }
    } else {
        fmt.Println(err)
    }
}

输出:

Galaxy Nexus 3460.00
Galaxy Nexus 3460.00

以上是如何在 Go 中解析 JSON 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn