Ich möchte das "encoding/json"
Paket verwenden, um eine Struktur zu marshallen, die in einem der importierten Pakete meiner Anwendung deklariert ist.
Z.B.:
type T struct {
Foo int
}
Da es importiert wird, beginnen alle verfügbaren (exportierten) Felder in der Struktur mit einem Großbuchstaben. Aber ich möchte Kleinbuchstaben haben:
out, err := json.Marshal(&T{Foo: 42})
wird darin enden, dass
{"Foo": 42}
aber ich möchte bekommen
{"foo": 42}
Ist es möglich, das Problem auf einfache Weise zu umgehen?
json
go
marshalling
ANisus
quelle
quelle
Antworten:
Schauen Sie sich die Dokumente zur Codierung von / json.Marshal an . Es wird die Verwendung von Strukturfeld-Tags erläutert, um zu bestimmen, wie der generierte JSON formatiert wird.
Beispielsweise:
Dadurch wird JSON wie folgt generiert:
quelle
reflect
Paket darauf zugreifen .json:"some_tag"
anstelle vonjson: "some_tag"
. Ich habe eine Weile davon gebissen.Sie können mit den Schlüsseln, die Sie exportieren möchten, eine eigene Struktur erstellen und ihnen die entsprechenden JSON-Tags für Kleinbuchstaben geben. Anschließend können Sie die gewünschte Struktur in Ihre kopieren, bevor Sie sie als JSON codieren. Oder wenn Sie sich nicht mit der Erstellung einer lokalen Struktur beschäftigen möchten, können Sie wahrscheinlich eine
map[string]interface{}
erstellen und diese codieren.quelle
map[string]interface{}
würde funktionieren, solange ich keine verschachtelten Objekte / Strukturen habe