Heim >Backend-Entwicklung >Golang >So analysieren Sie das JSON-Format in Golang

So analysieren Sie das JSON-Format in Golang

藏色散人
藏色散人nach vorne
2021-01-25 14:42:533010Durchsuche

Die folgende Golang-Tutorial-Kolumne zeigt Ihnen, wie Golang das JSON-Format analysiert. Ich hoffe, dass es Freunden in Not hilfreich sein wird!

Der interaktive Datenteil zwischen dem Client und dem Server im Projekt ist JSON und muss daher auf dem Server analysiert werden. Das Parsen komplexer JSON ist tatsächlich ziemlich mühsam.
Die interaktiven Daten ähneln dem folgenden Format:

{"sn":1,"ls":false,"bg":0,"ed":0,"ws":[{"bg":0,"cw":[{"sc":0,"w":"还"}]},{"bg":0,"cw":[{"sc":0,"w":"有点"}]},{"bg":0,"cw":[{"sc":0,"w":"眼熟"}]}]}

Sie müssen das w-Feld im JSON-Format herausnehmen und es zur Anzeige in eine Ergebniszeichenfolge buchstabieren.

  • Ws aus dem JSON-Array abrufen.
  • ws ist ein Array , und das Array-Element ist ein Objekt Auf diese Weise ist es etwas mühsam, Typen Schicht für Schicht zu konvertieren und dann die Elemente abzurufen. Da es sich um eine bekannte JSON-Datenstruktur handelt, können Sie die Struktur definieren und dann analysieren.
  • func RecResultJsonToPlain() {    var recResult string    var dat map[string]interface{}
        json.Unmarshal([]byte(json_str), &dat)    if v, ok := dat["ws"]; ok {
            ws := v.([]interface{})        for i, wsItem := range ws {
                wsMap := wsItem.(map[string]interface{})            if vCw, ok := wsMap["cw"]; ok {
                    cw := vCw.([]interface{})                for i, cwItem := range cw {
                        cwItemMap := cwItem.(map[string]interface{})                    if w, ok := cwItemMap["w"]; ok {
                            recResult = recResult + w.(string)
                        }
                    }
                }
            }
        }
        fmt.Println(recResult)
    }
  • Hinweis
  • Beim Definieren muss der erste Buchstabe des Variablennamens großgeschrieben werden. Sie können auch Tools verwenden, um Definitionen automatisch zu generieren: https://mholt.github.io/json-to-go/; sind ziemlich schön. :
  • type CWItem struct {
        SC int32  `json:"sc"`
        W  string `json:"w"`}type WSItem struct {
        CW []CWItem}type IatResult struct {
        SN int32    `json:"sn"`
        LS bool     `json:"ls"`
        BG int32    `json:"bg"`
        ED int32    `json:"ed"`
        WS []WSItem `json:"ws"`}
    type AutoGenerated struct {
        Sn int `json:"sn"`
        Ls bool `json:"ls"`
        Bg int `json:"bg"`
        Ed int `json:"ed"`
        Ws []struct {
            Bg int `json:"bg"`
            Cw []struct {
                Sc int `json:"sc"`
                W string `json:"w"`
            } `json:"cw"`
        } `json:"ws"`
    }
Die oben genannten Elemente haben

obligatorische Beschreibungen. Wenn Sie also nur die entsprechenden Elemente benötigen, ist es in Ordnung, andere Elemente undefiniert zu lassen. Eine andere Art von Daten besteht darin, dass die Elemente im Array immer noch Arrays sind und das letzte Array Zahlen- oder Zeichenfolgentypen enthält. Die Daten lauten wie folgt Suche Ein Codestück lautet wie folgt und implementiert UnmarshalJSON erneut:

func RecResultJsonToPlain(jsonResult []byte)(recPlainResult string)  {    var r IatResult
    json.Unmarshal(jsonResult, &r)    for _, wsItem := range r.WS {        for _, cwItem := range wsItem.CW {
            recPlainResult = recPlainResult + cwItem.W
        }
    }    return recPlainResult
}

Weitere technische Artikel zu Golang finden Sie in der Spalte „Go-Sprache“!

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

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen