12
I den folgenden Code:Rangierung json.RawMessage kehrt Base64 codierte Zeichenfolge
package main
import (
"encoding/json"
"fmt"
)
func main() {
raw := json.RawMessage(`{"foo":"bar"}`)
j, err := json.Marshal(raw)
if err != nil {
panic(err)
}
fmt.Println(string(j))
}
Spielplatz:http://play.golang.org/p/qbkEIZRTPQ
Output:
"eyJmb28iOiJiYXIifQ=="
gewünschte Ausgabe:
{"foo":"bar"}
Warum Base64 es kodieren meine RawMessage
, als wäre es ein gewöhnlicher []byte
war?
Immerhin kehrt RawMessage Implementierung von MarshalJSON nur die Byte-Scheibe
// MarshalJSON returns *m as the JSON encoding of m.
func (m *RawMessage) MarshalJSON() ([]byte, error) {
return *m, nil
}
Wie kann ich seinen Schlüssel und Wert von j Variable verwenden? –
@RockBalbao 'j' ist die JSON-codierte Zeichenfolge. Um auf die Werte zuzugreifen, müssen Sie [json.Unmarshal] (https://golang.org/pkg/encoding/json/#Unmarshal) verwenden. – ANisus