json.RawMessage를 마샬링하면 Base64로 인코딩된 문자열이 반환됩니다.
질문:
json.RawMessage 값, 출력이 원시 JSON 대신 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)) }
예상 출력:
{"foo":"bar"}
실제 출력:
"eyJmb28iOiJiYXIifQ=="
답변:
json.RawMessage 유형의 MarshalJSON 메서드는 단순히 기본 바이트 슬라이스를 반환합니다. 그러나 json.RawMessage가 제대로 작동하려면 json.Marshal에 전달된 값이 포인터여야 합니다.
해결책:
문제를 해결하려면 코드를 업데이트하세요. 다음과 같습니다:
j, err := json.Marshal(&raw)
위 내용은 json.RawMessage 값을 마샬링하면 원시 JSON 대신 base64로 인코딩된 문자열이 생성되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!