Как мне использовать type map[string]interface {} в golang

Я пытаюсь получить данные из API. Когда я получаю данные из API:

result, _ := s.GetCases() // get cases via api
fmt.Println(reflect.TypeOf(result.Records[0]["Cases"]))

Он показывает тип результата.Records[0]["Cases"] is map[string]interface {}

Однако, по-видимому, я не могу напрямую использовать его в качестве карты. С:

fmt.Println(reflect.TypeOf(result.Records[0]["Cases"]["Id"]))

Это вызовет ошибку компилятора:

недопустимая операция: невозможно проиндексировать результат. Записи[0]["Случаи"] (индекс карты выражение интерфейса типа{})

Могу ли я узнать, как мне использовать этот тип в golang?

Если вы можете, вероятно, лучше разобрать ответ API непосредственно в соответствующую структуру данных (например, с помощью json.Unmarshal в срез структур).

Hymns For Disco 31.03.2023 05:20
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
1
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Значение имеет тип interface{}, и на основе вывода отражения этот интерфейс имеет значение map[string]interface{}. Итак, вам нужно получить фактическое значение, хранящееся в интерфейсе, с помощью утверждения типа:

fmt.Println(reflect.TypeOf(result.Records[0]["Cases"].(map[string]interface{})["Id"]))

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