Проверить, существует ли структура внутри структуры
У меня есть канал json, и я пытаюсь проверить, существует ли структура внутри структуры.
type feed struct {
Video struct {
Name string `json:"name"`
}
}
И вот немаршальский процесс:
data:= &feed{}
err := json.Unmarshal([]byte(structuredData), data)
if err != nil {
return err
}
В одних случаях есть, а в других нет. Я хотел бы проверить это в выражении if, что-то вроде
if data.Video != nil
но это, похоже, не компилируется (я получаю
invalid Operation
). Как мне проверить,
Video
существует или нет?
1 ответ
Если допустимое видео имеет непустое имя, используйте
data.Video.Name != ""
чтобы проверить действительное видео.
Если вы хотите определить, включен ли объект видео в JSON или нет, объявите тип с указателем на структуру:
type feed struct {
Video *struct { // <-- note * on this line
Name string `json:"name"`
}
}
Декодер JSON выделяет внутреннюю структуру только в том случае, если в документе JSON есть объект видео.
Проверьте наличие объекта видео в документе JSON, используя
data.Video != nil
.