>백엔드 개발 >Golang >golang 데이터를 json으로 변환하는 방법

golang 데이터를 json으로 변환하는 방법

PHPz
PHPz원래의
2023-04-24 09:10:282596검색

인터넷의 급속한 발전으로 인해 데이터 처리 및 전송이 점점 더 중요해지고 있습니다. JSON(JavaScript Object Notation)은 읽고 쓰기 쉬운 텍스트 형식으로 데이터를 전송하기 위해 인터넷에서 널리 사용되는 경량 데이터 교환 형식입니다. 효율적인 프로그래밍 언어인 golang은 데이터를 JSON 형식으로 쉽게 변환하는 방법도 제공합니다.

golang에서는 코드를 작성하여 데이터를 JSON 형식으로 변환할 수 있습니다. 구체적으로 다음과 같은 두 가지 방법이 있습니다.

방법 1: 표준 라이브러리인 인코딩/json을 사용합니다.

표준 라이브러리인 인코딩/json은 JSON 형식을 인코딩하고 디코딩하는 방법을 제공합니다. 먼저 사용자 정의 구조를 정의해야 하며 해당 필드는 json 태그로 표시해야 합니다.

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

这里的json标签指定了该字段在JSON中的名称。接下来,我们可以用生成JSON的byte数组的方式将Person类型的数据转换为JSON格式:

import (
 "encoding/json"
 "fmt"
)

func main() {
 person := Person{Name: "Tom", Age: 18}
 data, err := json.Marshal(person)
 if err != nil {

fmt.Println("JSON Marshalling failed:", err)
return

}
 fmt.Printf("JSON data:n%sn", data)
}

输出结果:

JSON data:
{"name":"Tom","age":18}

我们还可以使用Unmarshal函数将JSON解码为结构体:

func main() {
 jsonStr := {"name":"Tom","age":18}

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

fmt.Println("JSON Unmarshalling failed:", err)
return

}

fmt.Printf("Decoded Person data: %+vn", person)
}

输出结果:

Decoded Person data: {Name:Tom Age:18}

方式二:使用第三方库

使用第三方库将数据转换为JSON格式也非常简单。其中比较流行的有gjson、jsoniter等库。这里以jsoniter为例。

首先定义自定义结构体,与方式一相同。

接下来,我们可以使用jsoniter库的Marshal函数将Person类型的数据转换为JSON格式,与标准库类似:

import (
 "github.com/json-iterator/go"
 "fmt"
)

func main() {
 // define struct
 person := Person{Name: "Tom", Age: 18}

// convert data to json format
 data, err := jsoniter.Marshal(person)
 if err != nil {

fmt.Println("JSON Marshalling failed:", err)
return

}

fmt.Printf("JSON data:n%sn", data)
}

输出结果:

JSON data:
{"name":"Tom","age":18}

同样的,我们还可以使用jsoniter库的Unmarshal函数解码由JSON格式转换来的数据:

func main() {
 jsonStr := {"name":"Tom","age":18} Age int json: " age"

}


여기서 json 태그는 JSON에서 필드 이름을 지정합니다. 다음으로 JSON 바이트 배열을 생성하여 Person 유형 데이터를 JSON 형식으로 변환할 수 있습니다.

import (

"encoding/json"

"fmt"
)

func main() {

person := Person{Name: "Tom", 연령: 18}

data, err := json.Marshal(person)

if err != nil {

fmt.Println("JSON Unmarshalling failed:", err)
return
}

fmt.Printf("JSON data:n%sn", data )

}🎜 🎜출력 결과:🎜🎜JSON 데이터:🎜{"name":"Tom","age":18}🎜🎜또한 Unmarshal 함수를 사용하여 JSON을 구조로 디코딩할 수도 있습니다:🎜🎜func main() {🎜 jsonStr := {"name":"Tom","age":18}🎜🎜var person Person🎜 if err := json.Unmarshal([]byte(jsonStr), &person) err ; = nil {🎜rrreee🎜}🎜🎜fmt.Printf("Decoded Person data: %+vn", person)🎜}🎜🎜출력 결과: 🎜🎜Decoded Person data: {이름:Tom Age:18}🎜 🎜방법 2 : 타사 라이브러리 사용🎜🎜타사 라이브러리를 사용하여 데이터를 JSON 형식으로 변환하는 것도 매우 간단합니다. 가장 인기 있는 라이브러리 중에는 gjson 및 jsoniter와 같은 라이브러리가 있습니다. 여기서는 jsoniter를 예로 들어보겠습니다. 🎜🎜먼저 방법 1과 동일하게 사용자 정의 구조를 정의합니다. 🎜🎜다음으로 jsoniter 라이브러리의 Marshal 함수를 사용하여 표준 라이브러리와 유사하게 Person 유형 데이터를 JSON 형식으로 변환할 수 있습니다. 🎜🎜import (🎜 "github.com/json-iterator/go"🎜 "fmt"🎜 ) 🎜🎜func main() {🎜 // struct🎜 정의 person := Person{이름: "Tom", Age: 18}🎜🎜// 데이터를 json 형식으로 변환🎜 data, err := jsoniter.Marshal(person) 🎜 if err != nil {🎜rrreee🎜}🎜🎜fmt.Printf("JSON data:n%sn", data)🎜}🎜🎜출력 결과: 🎜🎜JSON 데이터:🎜{"name":"Tom", " age":18}🎜🎜마찬가지로 jsoniter 라이브러리의 Unmarshal 함수를 사용하여 JSON 형식에서 변환된 데이터를 디코딩할 수도 있습니다.🎜🎜func main() {🎜 jsonStr := {"name":" Tom" ,"age":18}🎜🎜var person Person🎜 if err := jsoniter.Unmarshal([]byte(jsonStr), &person); err != nil {🎜rrreee🎜}🎜🎜fmt. Printf( "Decoded Person data: %+vn", person)🎜}🎜🎜출력 결과:🎜🎜Decoded Person data: {Name:Tom Age:18}🎜🎜Summary🎜🎜golang에서는 표준 라이브러리 인코딩을 사용할 수 있습니다. /json은 데이터를 JSON 형식으로 변환하므로 타사 라이브러리를 사용하여 동일한 변환을 수행할 수도 있습니다. 다양한 라이브러리는 특정 측면에서 다르므로 실제 상황에 따라 적절한 라이브러리를 선택할 수 있습니다. 어떤 방법을 사용하든 JSON 형식을 변환하는 것은 매우 간단합니다. 🎜

위 내용은 golang 데이터를 json으로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.