Heim >Backend-Entwicklung >Golang >Golang unregelmäßige JSON-Analyse

Golang unregelmäßige JSON-Analyse

(*-*)浩
(*-*)浩Original
2019-12-17 13:26:053040Durchsuche

Golang unregelmäßige JSON-Analyse

json.Unmarshal Das Operationsobjekt ist ein []Byte, was bedeutet, dass das gesamte verarbeitete JSON in den Speicher geladen werden muss.

Wenn JSON geladen ist, ist die Verwendung von json.Unmarshal schneller.                                                                                                                                                                         (Empfohlen zu lernen: go)

json.Decoder betreibt einen Stream oder andere Typen, die das implementieren io.Reader-Schnittstelle. Das heißt, es kann beim Empfang oder bei der Übertragung analysiert werden. Bei der Verarbeitung einer größeren Datenmenge ist es nicht erforderlich, den gesamten JSON-Code erneut in den Speicher zu kopieren.

Die beste Wahl ist wie folgt:

Wenn die Daten von einem io.Reader stammen oder Daten aus einem Stream lesen müssen, wählen Sie json.Decoder

Wenn der gesamte JSON in den Speicher geladen wurde, verwenden Sie json.Unmarshal

Analyse unbestimmter Typen

Manchmal, wenn Sie auf JSON mit unsicheren Feldern stoßen, benötigen Sie Judge und gleichzeitig analysieren. Beispiel:

t1 := `{"type":"a", id:"aaa"}`t2 := `{"type":"b", id:22222}`

Unmarshal to interface{}

Sie können zuerst unmarshal to interface{} und dann die Schlüsselfelder vor der weiteren Verarbeitung bestimmen.

type Data struct {
    Type string      `json:"type"`
    Id   interface{} `json:"id"`}func decode(t string) {    var x Data
    err := json.Unmarshal([]byte(t), &x)    if err != nil {        panic(err)
    }    if x.Type == "a" {
        fmt.Println(x.Id.(string))
    } else {
        fmt.Println(x.Id.(float64)) //json解析中number默认作为float64解析
    }
}func main() {
    t1 := `{"type":"a", "id":"aaa"}`
    t2 := `{"type":"b", "id":22222}`
    decode(t1)
    decode(t2)
}

Ergebnis

aaa
22222

Das obige ist der detaillierte Inhalt vonGolang unregelmäßige JSON-Analyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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