golangはjsonライブラリの1つの比較的に陥りやすい穴uint 8[]配列のjson変換問題について.

605 ワード

このようなCAは、インスタンスがjsonに変換するとする.Listは文字列になります.
type CA struct {
	List []uint8
}

func main() {
	ca := CA{[]uint8{1,2,3,4,5,6,7,8,9,0}}
	r, _ := json.Marshal(ca)
	fmt.Println(string(r)) //{"List":"AQIDBAUGBwgJAA=="}
}

私たちが望んでいるのは正常なjsonですint 8 byte uint 8という8ビットのjsonライブラリだけが文字列として処理してくれます.解決したい頭を叩くとこのいくつかのタイプは使えません.正常にjson文字列に変換するには、16,32,64ビットの数字が必要である.
{"List":[1,2,3,4,5,6,7,8,9,0]}

でも心配しないでください.Unmarshalという私たちが望んでいないjson文字列をCAの他のインスタンスに再接続すると、望ましい結果が得られると思います.
.言語をまたがるjson通信であれば気をつけなければならない.