Проверить, существует ли структура внутри структуры

У меня есть канал 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.

Другие вопросы по тегам