Home  >  Article  >  Backend Development  >  How to transfer JSON data in Golang

How to transfer JSON data in Golang

PHPz
PHPzOriginal
2023-04-05 10:29:48666browse

Golang is a very popular programming language that focuses on simplifying the lives of developers. Manipulating JSON data is a common task in this language. JSON (JavaScript Object Notation) is a lightweight data exchange format used to transfer data between interfaces. How to transfer JSON data in Golang? Here are some tips.

The first method is to use Golang’s built-in package encoding/json. This package allows us to convert JSON to corresponding Go types, and Go types to JSON. For example, here is the sample code to convert JSON to struct:

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

func main() {
    jsonString := `{"name":"Jack","age":30,"gender":"male"}`
    var p Person
    err := json.Unmarshal([]byte(jsonString), &p)
    if err != nil {
        fmt.Println("解析 JSON 出错:", err)
        return
    }
    fmt.Println(p)  // 输出:{Jack 30 male}
}

In the above code, we define a Person struct and use json.Unmarshal to parse the JSON string into the struct. It should be noted that each field in the structure needs to be annotated with the json:"" tag so that the encoder and decoder know the field name to be converted.

The second method is to use the third-party package jsoniter. This package is capable of processing JSON data faster than the standard json package. Here is a sample code for converting JSON data using jsoniter:

import "github.com/json-iterator/go"

func main() {
    jsonString := `{"name":"Jack","age":30,"gender":"male"}`
    var p map[string]interface{}
    jsoniter.Unmarshal([]byte(jsonString), &p)
    fmt.Println(p)  // 输出:map[age:30 gender:male name:Jack]
}

In the above code, we use jsoniter.Unmarshal to parse the JSON string into a map[string]interface{} object and print the object. It should be noted that this parsing method will destroy the type information of the JSON data, so subsequent type conversion may be required.

The third method is to use the third-party package go-simplejson. This package makes it easy to manipulate JSON data and supports chaining syntax. Here is a sample code using go-simplejson:

import "github.com/bitly/go-simplejson"

func main() {
    jsonString := `{"name":"Jack","age":30,"gender":"male"}`
    js, err := simplejson.NewJson([]byte(jsonString))
    if err != nil {
        fmt.Println("解析 JSON 出错:", err)
        return
    }
    name := js.Get("name").MustString()
    age := js.Get("age").MustInt()
    gender := js.Get("gender").MustString()
    p := Person{name, age, gender}
    fmt.Println(p)  // 输出:{Jack 30 male}
}

In the above code, we use simplejson.NewJson to convert the JSON string into a simple JSON object. We can then use the Get method to get the value of the object, and the MustString and MustInt methods to get the corresponding string and integer values.

In summary, there are many methods to choose from for converting JSON data in Golang. The most commonly used one is the standard library encoding/json. If you need faster speed, you can use jsoniter. In addition, go-simplejson is also a very useful JSON library, which provides chain syntax and easy operation. Either way, you can easily manipulate JSON data.

The above is the detailed content of How to transfer JSON data in Golang. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn