Heim > Backend-Entwicklung > Golang > So konvertieren Sie Golang-Daten in JSON

So konvertieren Sie Golang-Daten in JSON

PHPz
Freigeben: 2023-04-24 10:07:00
Original
2574 Leute haben es durchsucht

Mit der rasanten Entwicklung des Internets kommt der Datenverarbeitung und -übertragung eine immer größere Bedeutung zu. JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das im Internet weit verbreitet ist, um Daten in einem Textformat zu übertragen, das leicht zu lesen und zu schreiben ist. Als effiziente Programmiersprache bietet Golang auch eine Möglichkeit, Daten einfach in das JSON-Format zu konvertieren.

In Golang können Daten durch Schreiben von Code in das JSON-Format konvertiert werden. Im Einzelnen gibt es die folgenden zwei Methoden:

Methode 1: Verwenden Sie die Standardbibliothek „encoding/json“

Die Standardbibliothek „encoding/json“ bietet Methoden zum Kodieren und Dekodieren des JSON-Formats. Zuerst müssen wir eine benutzerdefinierte Struktur definieren, deren Felder mit JSON-Tags markiert werden müssen:

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
Nach dem Login kopieren
Nach dem Login kopieren

}
 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
Nach dem Login kopieren
Nach dem Login kopieren

}

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
Nach dem Login kopieren
Nach dem Login kopieren

}

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"

}


Das JSON-Tag hier gibt den Namen des Felds in JSON an. Als nächstes können wir die Personentypdaten in das JSON-Format konvertieren, indem wir ein JSON-Byte-Array generieren:

import (

"encoding/json"

"fmt"# 🎜🎜#)

func main() {

person := Person{Name: „Tom“, Alter: 18}

data, err := json.Marshal(person )#🎜🎜 # if err != nil {

fmt.Println("JSON Unmarshalling failed:", err)
return
Nach dem Login kopieren
Nach dem Login kopieren
}

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

}

# 🎜🎜#Output Ergebnis:

#🎜🎜#JSON-Daten:#🎜🎜#{"name":"Tom","age":18}#🎜🎜##🎜🎜#Wir können auch die Unmarshal-Funktion verwenden, um JSON zu dekodieren eine Struktur: #🎜🎜##🎜🎜#func main() {#🎜🎜# jsonStr := {"name":"Tom","age":18}# 🎜🎜## 🎜🎜#var person Person#🎜🎜# if err := json.Unmarshal([]byte(jsonStr), &person); err != nil {#🎜🎜#rrreee#🎜🎜#}#🎜🎜 ##🎜🎜 #fmt.Printf("Dekodierte Personendaten: %+vn", Person)#🎜🎜#}#🎜🎜##🎜🎜#Ausgabeergebnis: #🎜🎜##🎜🎜#Dekodierte Personendaten: { Name:Tom Alter :18}#🎜🎜##🎜🎜#Methode 2: Verwenden Sie eine Drittanbieter-Bibliothek#🎜🎜##🎜🎜#Es ist auch sehr einfach, eine Drittanbieter-Bibliothek zu verwenden, um Daten in das JSON-Format zu konvertieren. Zu den beliebtesten gehören Bibliotheken wie gjson und jsoniter. Hier nehmen wir Jsoniter als Beispiel. #🎜🎜##🎜🎜#Definieren Sie zunächst die benutzerdefinierte Struktur, genau wie bei Methode eins. #🎜🎜##🎜🎜#Als nächstes können wir die Marshal-Funktion der jsoniter-Bibliothek verwenden, um Personentypdaten in das JSON-Format zu konvertieren, ähnlich der Standardbibliothek: #🎜🎜##🎜🎜#import (#🎜🎜# " github .com/json-iterator/go"#🎜🎜# "fmt"#🎜🎜#)#🎜🎜##🎜🎜#func main() {#🎜🎜# // define struct#🎜🎜# person := Person {Name: „Tom“, Alter: 18}#🎜🎜##🎜🎜#// Daten in JSON-Format konvertieren#🎜🎜# data, err := jsoniter.Marshal(person)#🎜🎜# if err != nil {#🎜🎜#rrreee#🎜🎜#}#🎜🎜##🎜🎜#fmt.Printf("JSON data:n%sn", data)#🎜🎜#}#🎜🎜##🎜🎜#Ausgabeergebnis : #🎜🎜##🎜🎜#JSON-Daten:#🎜🎜#{"name":"Tom","age":18}#🎜🎜##🎜🎜#Ähnlich können wir auch die Unmarshal-Funktion von verwenden jsoniter-Bibliothek Dekodieren Sie die aus dem JSON-Format konvertierten Daten: #🎜🎜##🎜🎜#func main() {#🎜🎜# jsonStr := {"name":"Tom","age":18} code >#🎜🎜##🎜🎜#var person Person#🎜🎜# if err := jsoniter.Unmarshal([]byte(jsonStr), &person); err != nil {#🎜🎜#rrreee#🎜🎜#} # 🎜🎜##🎜🎜#fmt.Printf("Dekodierte Personendaten: %+vn", Person)#🎜🎜#}#🎜🎜##🎜🎜#Ausgabeergebnis: #🎜🎜##🎜🎜#Dekodierte Person Daten: {Name:Tom Alter:18}#🎜🎜##🎜🎜#Zusammenfassung#🎜🎜##🎜🎜#In Golang können wir die Standardbibliothek „encoding/json“ verwenden, um Daten in das JSON-Format zu konvertieren, oder wir können es verwenden die Bibliotheken von Drittanbietern, um die gleiche Konvertierung zu erreichen. Verschiedene Bibliotheken unterscheiden sich in einigen Aspekten, sodass Sie je nach Ihrer tatsächlichen Situation die geeignete Bibliothek auswählen können. Unabhängig davon, welche Methode verwendet wird, ist die Konvertierung des JSON-Formats sehr einfach. #🎜🎜#

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Golang-Daten in JSON. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage