2016-07-09 12 views
-2

Also ich möchte Daten zu JSON marshalieren. Die grundlegende Struktur sieht wie folgt aus:json.Marshal verhält sich anders mit zwei Objekten (Go/Golang)

type DatabaseObject struct { 
    Preferences []int    `json:"preferences"` 
    Texts  map[string]string `json:"texts"` 
    Options  map[string]string `json:"options"` 
    Gender  string   `json:"gender"` 
    EMail  string   `json:"email"` 
} 

Hier ist die (Arbeits-) Spielplatz Version: https://play.golang.org/p/GI3nAo7L4a

Wenn ich diesen Code in meinem Programm verwenden jedoch das Ergebnis ist sehr unterschiedlich. Hier ist mein Code:

jsonObject, err := json.Marshal(DatabaseObject{}) 
if err != nil { 
    log.Fatal(err) 
} 
fmt.Printf("%+v", jsonObject) 

Er druckt:

[123 34 112 114 101 102 101 114 101 110 99 101 115 34 58 110 117 108 108 44 34 116 101 120 116 115 34 58 110 117 108 108 44 34 111 112 116 105 111 110 115 34 58 110 117 108 108 44 34 103 101 110 100 101 114 34 58 34 34 44 34 101 109 97 105 108 34 58 34 34 125] 

Weiß jemand, warum json.Marshal hier nicht funktioniert? Es ist eine leere Struktur, sollte es so aussehen

{"preferences":null,"texts":null,"options":null,"gender":"","email":""} 
+0

Ich bin ein bisschen verwirrt, also Sie sagen, wenn Sie den gleichen Code ausführen, das ist auf dem Spielplatz, lokal zeigt es nicht die gleiche Ausgabe? –

+0

Ich habe die ursprüngliche Frage bearbeitet und es viel einfacher gemacht. – Traveller

Antwort

2

Sie versuchen, die Darstellung dessen, was json.Marshal Ausgänge mit %+v zu drucken.

json.Marshal gibt ein Byte Slice zurück, das genau das ist, was Sie sehen.

jsonObject, err := json.Marshal(DatabaseObject{}) 
if err != nil { 
    log.Fatal(err) 
} 
fmt.Printf("%+v", jsonObject) 

Gibt die Bytes für die JSON-Zeichenfolge aus. Wenn Sie stattdessen fmt.Printf("%s", jsonObject) verwenden, erhalten Sie, was Sie suchen.

Eine andere Option wäre fmt.Printf("%+v", string(jsonObject)) nur damit Sie sehen können, wovon ich rede Ich habe den Spielplatz, den Sie zur Verfügung gestellt haben, verändert. https://play.golang.org/p/ipbSbryk1L

+0

ich habe es wirklich übersehen .. danke! – Traveller

Verwandte Themen