golang json array

发布时间:2024-11-21 21:08:43

使用golang处理json数组

在golang开发过程中,我们经常需要处理JSON数据。而处理JSON数组是其中的一项重要任务。本文将介绍如何使用golang处理JSON数组,包括解析和生成JSON数组。

解析JSON数组

首先,让我们来看看如何使用golang解析JSON数组。

假设我们有以下JSON数组:

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

要解析这个JSON数组,我们可以使用encoding/json包提供的Unmarshal函数。以下是一个示例:

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

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

	var people []Person
	err := json.Unmarshal([]byte(jsonStr), &people)
	if err != nil {
		panic(err)
	}

	for _, p := range people {
		fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)
	}
}

运行上述代码,我们将得到输出:

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

生成JSON数组

接下来,让我们看看如何使用golang生成JSON数组。

假设我们有以下结构体切片:

type Person struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func main() {
	people := []Person{
		{Name: "Alice", Age: 25},
		{Name: "Bob", Age: 30},
	}

	jsonData, err := json.Marshal(people)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(jsonData))
}

运行上述代码,我们将得到输出:

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

处理嵌套的JSON数组

有时,JSON数组中可能包含其他JSON数组。以下是一种处理嵌套JSON数组的方法:

type Person struct {
	Name     string   `json:"name"`
	Age      int      `json:"age"`
	Children []Person `json:"children"`
}

func main() {
	jsonStr := `[
		{
			"name": "Alice",
			"age": 25,
			"children": [
				{"name": "Bob", "age": 5},
				{"name": "Charlie", "age": 3}
			]
		},
		{
			"name": "David",
			"age": 30,
			"children": []
		}
	]`

	var people []Person
	err := json.Unmarshal([]byte(jsonStr), &people)
	if err != nil {
		panic(err)
	}

	for _, p := range people {
		fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age)
		if len(p.Children) > 0 {
			fmt.Println("Children:")
			for _, c := range p.Children {
				fmt.Printf("   Name: %s, Age: %d\n", c.Name, c.Age)
			}
		}
		fmt.Println()
	}
}

运行上述代码,我们将得到输出:

Name: Alice, Age: 25
Children:
   Name: Bob, Age: 5
   Name: Charlie, Age: 3

Name: David, Age: 30

总结

本文介绍了如何使用golang处理JSON数组。我们学习了如何解析和生成JSON数组,以及如何处理嵌套的JSON数组。希望本文对于那些想要了解如何在golang中处理JSON数组的开发者们有所帮助。

相关推荐