golang 构建json

发布时间:2024-07-07 18:03:49

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它以人类可读的形式存储和传输数据。在Golang中,我们可以使用标准库中的encoding/json来构建和解析JSON。

JSON的构建

Golang提供了一个结构体标记的方式来构建JSON。通过在结构体字段上添加`json`的标记,我们可以指定字段的名称、类型和其他属性。

下面是一个示例结构体和相应的JSON构建代码:

type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
    Email string `json:"email,omitempty"`
}

func main() {
    p := Person{
        Name: "John Doe",
        Age: 30,
    }
    
    b, err := json.Marshal(p)
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println(string(b))
}

在上面的示例中,我们定义了一个名为`Person`的结构体,有三个字段:Name、Age和Email。在每个字段的后面,我们添加了`json`标记来指定字段在JSON中的名称。

JSON的解析

除了构建JSON之外,我们还可以使用Golang来解析已存在的JSON。`encoding/json`提供了`json.Unmarshal`函数来解析JSON字符串,并将解析结果存储到对应的结构体中。

下面是一个示例代码:

type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
    Email string `json:"email,omitempty"`
}

func main() {
    jsonStr := `{"name":"John Doe","age":30}`
    
    var p Person
    err := json.Unmarshal([]byte(jsonStr), &p)
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println(p.Name, p.Age)
}

在上面的示例中,我们定义了一个名为`Person`的结构体,并定义一个JSON字符串。然后,我们使用`json.Unmarshal`函数将JSON字符串解析成对应的结构体。

处理复杂的JSON

在实际开发中,我们经常会遇到复杂的JSON结构,例如嵌套的结构体、切片、Map等。Golang中,我们可以使用相同的方式来构建和解析这些复杂的JSON。

下面是一个示例代码:

type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
    Addresses []Address `json:"addresses"`
}

type Address struct {
    Street string `json:"street"`
    City string `json:"city"`
}

func main() {
    p := Person{
        Name: "John Doe",
        Age: 30,
        Addresses: []Address{
            {Street: "123 Main St", City: "New York"},
            {Street: "456 Elm St", City: "Los Angeles"},
        },
    }
    
    b, err := json.Marshal(p)
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println(string(b))
}

在上面的示例中,我们定义了一个名为`Person`的结构体和一个名为`Address`的嵌套结构体,`Person`结构体包含一个`Addresses`字段,它是一个`Address`类型的切片。我们可以通过将对应的JSON标记添加到结构体字段上来构建和解析这个复杂的JSON。

通过Golang的encoding/json包,我们可以轻松地构建和解析JSON。无论是简单的JSON还是复杂的JSON结构,Golang都有强大的工具来处理它们。

相关推荐