Я предполагаю, что вы вывесили неправильный JSON и скажу это '{"hello": "world"}
на структуру имеет предопределенные поля, и с помощью произвольного JSON, которого невозможно узнать заранее. Возможным решением было бы преобразование его в карту.
var data interface{}
b := []byte(`{"hello": "world"}`)
err := json.Unmarshal(b, &data)
if err != nil {
panic(err)
}
fmt.Print(data)
Когда вы распечатываете данные, вы, вероятно, получите что-то вроде. map[hello:world]
Который в форме map[string]interface{}
.
Тогда вы можете использовать переключатель типа в петлю в структуру карты, пока не найдете тип assert все interface{}
.
for k, v := range data.(map[string]interface{}) {
switch val := v.(type) {
case string:
v = val
default:
fmt.Println(k, "is unknown type")
}
}
Карта - идеальная структура данных при работе с произвольным входящим JSON. Однако, если JSON создается из таблицы SQL с предопределенными схемами, вы можете использовать структуру с той же структурой, а не с картой.
type Hello struct {
Hello string `json:"hello"`
}
Ваш json не представляет собой массив. Массивы в json обозначаются символом '[]'. Это просто структура с другой структурой внутри нее. – evanmcdonnal
данные выглядят бегущей строки json с объектом для меня, а не массивом – Vasfed