Golang FastJSON获取数组数据

在使用Golang的FastJSON库解析JSON数据时,遇到一个问题:如何正确获取JSON中的数组数据?例如对于这样的JSON结构:

{
  "data": [
    {"id": 1, "name": "item1"},
    {"id": 2, "name": "item2"}
  ]
}

尝试使用Get("data")获取后,不知道如何将其转换为[]map[string]interface{}或具体的结构体切片。请问正确的处理方法是什么?

2 回复

在Golang中,使用fastjson获取数组数据,可通过Get()定位数组,再遍历Array()获取元素。示例:

arr := fastjson.Get(data, "key").GetArray()
for _, v := range arr {
    fmt.Println(v.String())
}

注意处理错误和类型转换。

更多关于Golang FastJSON获取数组数据的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,FastJSON 是一个高性能的 JSON 解析库,特别适合处理动态或未知结构的 JSON 数据。以下是使用 FastJSON 获取数组数据的步骤和示例代码:

步骤:

  1. 解析 JSON 数据:使用 fastjson.Parse() 解析 JSON 字符串。
  2. 获取数组对象:通过 Get() 或数组索引访问数组。
  3. 遍历数组元素:使用循环处理每个数组项。

示例代码:

假设 JSON 数据为:

{
  "users": [
    {"name": "Alice", "age": 25},
    {"name": "Bob", "age": 30}
  ]
}

Go 代码:

package main

import (
	"fmt"
	"github.com/valyala/fastjson"
)

func main() {
	jsonData := `{"users": [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]}`

	// 解析 JSON
	parsed, err := fastjson.Parse(jsonData)
	if err != nil {
		panic(err)
	}

	// 获取 "users" 数组
	usersArray := parsed.GetArray("users")

	// 遍历数组
	for _, user := range usersArray {
		name := string(user.GetStringBytes("name"))
		age := user.GetInt("age")
		fmt.Printf("Name: %s, Age: %d\n", name, age)
	}
}

输出:

Name: Alice, Age: 25
Name: Bob, Age: 30

注意事项:

  • 使用 GetArray() 直接获取数组,若字段不存在或非数组会返回空数组。
  • 对于嵌套数组或复杂结构,可结合 Get() 和类型断言(如 GetObject())。
  • 处理错误以确保解析安全。

通过以上方法,你可以高效地使用 FastJSON 提取和操作 JSON 数组数据。

回到顶部