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"}
RawMessage
이 일반 []byte
인 것처럼 base64가 인코딩되는 이유는 무엇입니까? 결국
json.RawMessage
가 제대로 작동하려면
json.Marshal
에 전달 된 값은 포인터이어야 발견
go-nuts thread
에서 답을 바이트 슬라이스
// 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