Ich versuche, eine Go-Struktur mit dem json
Paket in JSON zu konvertieren , aber alles, was ich bekomme, ist {}
. Ich bin sicher, dass es etwas völlig Offensichtliches ist, aber ich sehe es nicht.
package main
import (
"fmt"
"encoding/json"
)
type User struct {
name string
}
func main() {
user := &User{name:"Frank"}
b, err := json.Marshal(user)
if err != nil {
fmt.Printf("Error: %s", err)
return;
}
fmt.Println(string(b))
}
Wenn ich dann versuche, es auszuführen, erhalte ich Folgendes:
$ 6g test.go && 6l -o test test.6 && ./test
{}
`json:"name"`
am Ende der Strukturfelddefinition hinzufügen können , um den Ausgabenamen beizubehalten.Verwandte Ausgabe:
Ich hatte Probleme, die Struktur in JSON zu konvertieren, sie als Antwort von Golang zu senden und sie später in JavaScript über Ajax abzufangen.
Viel Zeit verschwendet, also Lösung hier posten.
In Go:
In JavaScript:
Hoffe das hilft jemandem.
Viel Glück.
quelle
Strukturwerte werden als JSON-Objekte codiert. Jedes exportierte Strukturfeld wird Mitglied des Objekts, es sei denn:
Die leeren Werte sind false, 0, ein beliebiger Nullzeiger oder Schnittstellenwert sowie ein Array, ein Slice, eine Map oder eine Zeichenfolge mit der Länge Null. Die Standardschlüsselzeichenfolge des Objekts ist der Name des Strukturfelds, kann jedoch im Tag-Wert des Strukturfelds angegeben werden. Der "json" -Schlüssel im Tag-Wert des Strukturfelds ist der Schlüsselname, gefolgt von einem optionalen Komma und Optionen.
quelle
Sie können Ihre eigenen benutzerdefinierten MarshalJSON- und UnmarshalJSON-Methoden definieren und absichtlich steuern, was enthalten sein soll, z.
quelle