Heim  >  Artikel  >  Backend-Entwicklung  >  Golang-Fehler: „Unerwartetes Ende der JSON-Eingabe“ Wie kann man ihn lösen?

Golang-Fehler: „Unerwartetes Ende der JSON-Eingabe“ Wie kann man ihn lösen?

王林
王林Original
2023-06-24 21:52:397760Durchsuche

In den letzten Jahren ist die von Google entwickelte und eingeführte Go-Sprache (auch bekannt als Golang) für viele Entwickler zu einer Wahl geworden. Golang wird aufgrund seiner schnellen Kompilierungsgeschwindigkeit, effizienten Speicherverwaltung und leistungsstarken Netzwerkprogrammierfunktionen häufig verwendet. Während der Entwicklung können jedoch verschiedene Probleme auftreten. Bei der Verwendung der JSON-Parsing-Bibliothek kann beispielsweise der Fehler „Unerwartetes Ende der JSON-Eingabe“ auftreten.

Was ist der Fehler „Unerwartetes Ende der JSON-Eingabe“?

Dieser Fehler wird ausgelöst, wenn beim Parsen des JSON-Textes auf das Ende des Textes gestoßen wird und der gesamte JSON-Text nicht korrekt analysiert werden kann.

Verwenden Sie das Paket „encoding/json“, um JSON in der Go-Sprache zu analysieren. Wenn wir JSON in ein Strukturobjekt oder Kartenobjekt konvertieren, können wir es mit der Methode json.Unmarshal analysieren.

Zum Beispiel haben wir eine solche HTTP-Antwortnachricht:

HTTP/1.1 200 OK
Content-Type: application/json

{"code": 200, "message": "success", "data": {"name": "John", "age": 18}}

Um diesen JSON-String in ein Strukturobjekt umzuwandeln, können wir Folgendes tun:

type Response struct {
    Code    int    `json:"code"`
    Message string `json:"message"`
    Data    struct {
        Name string `json:"name"`
        Age  int    `json:"age"`
    } `json:"data"`
}

...

resp, err := http.Get(url)
if err != nil {
    // handle error
}
defer resp.Body.Close()

var result Response
decoder := json.NewDecoder(resp.Body)
err = decoder.Decode(&result)
if err != nil {
    // handle error
}

Im obigen Beispiel erhalten wir ihn von der URL über http.Get HTTP Antwort und konvertieren Sie das JSON-Format im Antworttext in ein Antwortstrukturobjekt. Wenn das JSON-Format falsch ist, wird der Fehler „Unerwartetes Ende der JSON-Eingabe“ ausgelöst.

Wie kann dieses Problem gelöst werden?

Bei der Verarbeitung des JSON-Formats müssen wir auf einige Details achten, beispielsweise auf die Richtigkeit des JSON-Formats. Beim Parsen von JSON-Text stellen Sie möglicherweise fest, dass das JSON-Format falsch ist, z. B. fehlende Kommas, fehlende Anführungszeichen oder fehlende Klammern usw. Wenn wir die Methode json.Unmarshal verwenden, müssen wir sicherstellen, dass das JSON-Format korrekt ist, andernfalls tritt der Fehler „Unerwartetes Ende der JSON-Eingabe“ auf.

Im Beispielcode verwenden wir decoder.Decode(&result), um den Antworttext im JSON-Format in eine Antwortstruktur zu analysieren. Wenn das Antworttextformat jedoch falsch ist, wird der Fehler „Unerwartetes Ende der JSON-Eingabe“ ausgelöst .

Um dieses Problem zu lösen, sollten wir das JSON-Format des Antworttextes validieren. Wir können einige Tools wie JSONLint verwenden, um das JSON-Format zu überprüfen. Wenn das JSON wohlgeformt ist, kann es erfolgreich geparst werden. Wenn das JSON-Format falsch ist, müssen Sie das JSON-Format korrigieren, um den Antworttext korrekt zu analysieren.

Bei der tatsächlichen Codierung können wir den folgenden Ansatz verwenden, um das JSON-Format zu überprüfen:

resp, err := http.Get(url)
if err != nil {
    // handle error
}
defer resp.Body.Close()

result := make(map[string]interface{})
decoder := json.NewDecoder(resp.Body)
decoder.UseNumber() // 避免JSON数字溢出
err = decoder.Decode(&result)
if err != nil {
    // handle error
}

Im obigen Beispiel haben wir zuerst ein leeres Kartenobjekt erstellt. Dann erhalten wir ein Decoder-Objekt über die Methode json.NewDecoder und analysieren den Antworttext mithilfe der Methode decoder.Decode. Wir rufen auch die Methode decoder.UseNumber auf, um einen JSON-Nummernüberlauf zu vermeiden.

Wir müssen Fehler behandeln, wenn JSON nicht das richtige Format hat. Mit Code wie diesem können wir Fehler behandeln:

respBody, err := ioutil.ReadAll(resp.Body)
if err != nil {
    // handle error
}

if err := json.Unmarshal(respBody, &result); err != nil {
    fmt.Println("JSON parse error:", err)
    return err
}

Im obigen Beispiel haben wir zuerst den Antworttext gelesen und den JSON-Text mit der Methode json.Unmarshal analysiert. Wenn das JSON-Format falsch ist, wird eine Fehlermeldung zurückgegeben.

Durch die obige Methode können wir das Auftreten von Fehlern wie „unerwartetes Ende der JSON-Eingabe“ vermeiden und sicherstellen, dass unser Code das JSON-Format korrekt analysieren kann. Bei der tatsächlichen Entwicklung sollten wir auch auf die Richtigkeit und Rechtmäßigkeit des JSON-Formats achten, um sicherzustellen, dass unser Code Daten genau und effizient verarbeiten kann.

Das obige ist der detaillierte Inhalt vonGolang-Fehler: „Unerwartetes Ende der JSON-Eingabe“ Wie kann man ihn lösen?. 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