У меня есть API, который возвращает объект JSON с полем, содержащим массив байтов (упрощенно):
{
"value": "[208,188,149,77,179,245,29,184]"
}
Я могу демаршалировать string
на []byte
просто отлично:
var test = make([]byte,0)
testData := []byte("[208,188,149,77,179,245,29,184]")
_ = json.Unmarshal(testData, &test)
fmt.Println(len(test)) // output: 8
Однако, когда я пытаюсь демаршалировать это через struct
, этого не происходит:
type Test struct {
Value []byte `json:"value"`
}
testData := []byte(`
{
"value": "[208,188,149,77,179,245,29,184]"
}
`)
var test = Test{}
err := json.Unmarshal(testData, &test)
if err != nil {
t.Fatal(err) // output: illegal base64 data at input byte 0
}
Я получаю сообщение об ошибке:
illegal base64 data at input byte 0
Могу ли я что-нибудь сделать, кроме использования json.RawMessage
и ручного демаршалинга этого поля отдельно?
Спасибо.