📜  golang json to struct - Javascript (1)

📅  最后修改于: 2023-12-03 15:31:00.990000             🧑  作者: Mango

Golang JSON到结构体转换

对于Go语言中的JSON数据,我们通常需要将其转换为结构体。结构体是一种可用于存储和操作复杂数据类型的数据结构。本文将介绍如何将JSON字符串转换为Golang中的结构体。

步骤1:定义结构体

我们需要先定义一个结构体来存储将要解析的JSON数据。如果我们有以下JSON字符串:

{
  "name": "John",
  "age": 30,
  "isMarried": true,
  "hobbies": ["reading", "swimming"]
}

那么我们可以定义一个结构体如下:

type Person struct {
    Name      string   `json:"name"`
    Age       int      `json:"age"`
    IsMarried bool     `json:"isMarried"`
    Hobbies   []string `json:"hobbies"`
}

其中的json标签可以让编码和解码JSON数据时使用相同的字段名称。

步骤2:解析JSON数据

我们可以使用json.Unmarshal函数来解析JSON数据并将其转换为结构体。以下是一个示例函数,该函数将接收一个JSON字符串并解析为Person结构体:

func parseJson(jsonStr string) (Person, error) {
    var person Person
    err := json.Unmarshal([]byte(jsonStr), &person)
    if err != nil {
        return Person{}, err
    }
    return person, nil
}
步骤3:使用解析后的数据

现在我们已经将JSON数据解析为Person结构体,就可以使用该结构体中的字段了。例如,我们可以像这样打印人的姓名:

func printName(person Person) {
    fmt.Println("Name:", person.Name)
}
示例代码
package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name      string   `json:"name"`
    Age       int      `json:"age"`
    IsMarried bool     `json:"isMarried"`
    Hobbies   []string `json:"hobbies"`
}

func parseJson(jsonStr string) (Person, error) {
    var person Person
    err := json.Unmarshal([]byte(jsonStr), &person)
    if err != nil {
        return Person{}, err
    }
    return person, nil
}

func printName(person Person) {
    fmt.Println("Name:", person.Name)
}

func main() {
    jsonStr := `{
        "name": "John",
        "age": 30,
        "isMarried": true,
        "hobbies": ["reading", "swimming"]
    }`

    person, err := parseJson(jsonStr)
    if err != nil {
        panic(err)
    }

    fmt.Println(person)

    printName(person)
}

输出:

{Name:John Age:30 IsMarried:true Hobbies:[reading swimming]}
Name: John
总结

Golang中有很多内置的功能可以方便地将JSON数据转换为结构体。在这篇文章中,我们介绍了如何定义一个结构体、解析JSON数据以及如何使用这些数据。这些都是处理JSON数据时必须掌握的核心概念。