12
我運行下面的代碼:編組json.RawMessage返回base64編碼串
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))
}
遊樂場:http://play.golang.org/p/qbkEIZRTPQ
輸出:
"eyJmb28iOiJiYXIifQ=="
希望的輸出:
{"foo":"bar"}
爲什麼它base64編碼我的RawMessage
就好像它是一個普通的[]byte
?
畢竟,RawMessage的實現MarshalJSON的是剛剛返回字節片
// MarshalJSON returns *m as the JSON encoding of m.
func (m *RawMessage) MarshalJSON() ([]byte, error) {
return *m, nil
}
如何從j變量中使用它的鍵和值? –
@RockBalbao'j'是JSON編碼的字符串。要訪問這些值,你需要使用[json.Unmarshal](https://golang.org/pkg/encoding/json/#Unmarshal)。 – ANisus