JSONにエンコードしたい[]バイトフィールドとして文字列を含む構造体があります。しかし、生成されたJSONには、スライスの内容の期待されない文字列表現が含まれています。ここで私が呼ぶものの一例である:Goで文字列としてJSON []バイトをマーシャリング
package main
import (
"fmt"
"encoding/json"
)
type Msg struct {
Content []byte
}
func main() {
helloStr := "Hello"
helloSlc := []byte(helloStr)
fmt.Println(helloStr, helloSlc)
obj := Msg{helloSlc}
json, _ := json.Marshal(obj)
fmt.Println(string(json))
}
これは次の出力を生成します。
Hello [72 101 108 108 111]
{"Content":"SGVsbG8="}
変換はどのような[]バイトエンコードされた文字列に行っjson.Marshal()方法です。私の文字列{"Content": "Hello"}の元のコンテンツを持つJSONをどのように生成できますか?
JSONを適切にフォーマットする唯一の方法は、エンコードする前に[]バイトを文字列にキャストすることです。あるいは、この問題に対するより良いアプローチがありますか? – MonkeyButter
JSONの形式が正しくありません。この動作はバグではありません。文字列表現が必要で、テキストのみを扱う場合は、 '[] byte'の代わりに' string'を使います。 – nemo