So analysieren Sie das JSON-Format in Golang

藏色散人
Freigeben: 2021-01-25 14:43:21
nach vorne
2894 Leute haben es durchsucht

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":"眼熟"}]}]}
Nach dem Login kopieren

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)
    }
    Nach dem Login kopieren
  • 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"`}
    Nach dem Login kopieren
    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"`
    }
    Nach dem Login kopieren
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
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:cnblogs.com
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