Golang codiert und analysiert Json

Inhaltsverzeichnis

1. Codierung: func Marschall 

2. Analyse: func Unmarshal


Das Golang-Codierungs- / JSON-Paket enthält zwei Funktionen, Marshal und Unmarshal, mit denen Daten im Json-Format codiert bzw. decodiert (analysiert) werden.

1. Codierung: func Marschall 

func Marshal (v Schnittstelle {}) ([] Byte, Fehler)

Funktion: Geben Sie die von v codierten Json-Daten zurück. Beachten Sie, dass es sich um [] Byte handelt, zum Beispiel:

package main

import (
	"encoding/json"
	"fmt"
)

type Students struct {
	Name   string `Json:"name"`
	Height int    `Json:"height"`
	Sex    string `Json:"sex"`
}

type Teachers struct {
	Name   string `Json:"name"`
	Height int    `Json:"height"`
	Sex    string `Json:"sex"`
}

type School struct {
	Name    string     `Json:"name"`
	Area    int        `Json:"area"`
	Student []Students `Json:"student"`
	Teacher []Teachers `Json:"teacher"`
}

//initAssignment 初始化School
func initAssignment() School {
	student := []Students{
		{"张三", 180, "男"},
		{"王丽", 165, "女"},
	}
	teacher := []Teachers{
		{"李四", 180, "女"},
		{"王五", 177, "男"},
	}
	school := School{"中关村大学", 1024, student, teacher}

	return school
}

func main() {
	school := initAssignment()
	schoolJson, err := json.Marshal(school)
	if err != nil {
		fmt.Println("Umarshal Error:" + err.Error())
		return
	}
	fmt.Println("schoolJson:", string(schoolJson))
}

Im obigen Beispiel gibt es drei Strukturen: Schule, Schüler und Lehrer. Unter diesen enthält die Schule die beiden letzteren, instanziiert einen Schultyp und konvertiert ihn in einen Json-Typ.

Ausgabe:

[root@localhost gotest]# go run main.go 
schoolJson: {"Name":"中关村大学","Area":1024,"Student":[{"Name":"张三","Height":180,"Sex":"男"},{"Name":"王丽","Height":165,"Sex":"女"}],"Teacher":[{"Name":"李四","Height":180,"Sex":"女"},{"Name":"王五","Height":177,"Sex":"男"}]}
[root@localhost gotest]#

Dies ist nicht sehr intuitiv. Sehen Sie sich das folgende Formular an:

{
    "Name": "中关村大学",
    "Area": 1024,
    "Student": [
        {
            "Name": "张三",
            "Height": 180,
            "Sex": "男"
        },
        {
            "Name": "王丽",
            "Height": 165,
            "Sex": "女"
        }
    ],
    "Teacher": [
        {
            "Name": "李四",
            "Height": 180,
            "Sex": "女"
        },
        {
            "Name": "王五",
            "Height": 177,
            "Sex": "男"
        }
    ]
}

2. Analyse: func Unmarshal

func Unmarshal (Daten [] Byte, v Schnittstelle {}) Fehler

Funktion: Unmarshal analysiert die JSON-Daten und speichert das Ergebnis in v. Wenn v null oder kein Zeiger ist, gibt Unmarshal InvalidUnmarshalError zurück, zum Beispiel:

package main

import (
	"encoding/json"
	"fmt"
)

type Students struct {
	Name   string `Json:"name"`
	Height int    `Json:"height"`
	Sex    string `Json:"sex"`
}

type Teachers struct {
	Name   string `Json:"name"`
	Height int    `Json:"height"`
	Sex    string `Json:"sex"`
}

type School struct {
	Name    string     `Json:"name"`
	Area    int        `Json:"area"`
	Student []Students `Json:"student"`
	Teacher []Teachers `Json:"teacher"`
}

func main() {
	var school School
	strJson := `{"name":"中关村大学","area":1024,"student":[{"name":"张三","height":180,"sex":"男"},{"name":"王丽","height":165,"sex":"女"}],"teacher":[{"name":"李四","height":180,"sex":"女"},{"name":"王五","height":177,"sex":"男"}]}`
	err := json.Unmarshal([]byte(strJson), &school) //注意:第二个参数需要传递地址
	if err != nil {
		fmt.Println("Umarshal Error:" + err.Error())
		return
	}
	fmt.Printf("%#v\n", school)
	fmt.Println(school.Name, school.Area)
}

Ausgabe:

[root@localhost gotest]# go run main.go 
main.School{Name:"中关村大学", Area:1024, Student:[]main.Students{main.Students{Name:"张三", Height:180, Sex:"男"}, main.Students{Name:"王丽", Height:165, Sex:"女"}}, Teacher:[]main.Teachers{main.Teachers{Name:"李四", Height:180, Sex:"女"}, main.Teachers{Name:"王五", Height:177, Sex:"男"}}}
中关村大学 1024
[root@localhost gotest]#

Hierbei ist zu beachten, dass der erste Buchstabe des Variablennamens in der Struktur groß geschrieben werden sollte, damit andere Pakete auf die Variable der Struktur zugreifen können. Sie können die entsprechende Variable in Json analysieren, indem Sie nach der Variablen "Json:" Variablenname "" hinzufügen .

Referenzlink:

[1]  https://golang.org/pkg/encoding/json/

Ich denke du magst

Origin blog.csdn.net/u011074149/article/details/110291423
Empfohlen
Rangfolge