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