«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить доступ к вложенным данным JSON в Golang и устранить ошибку «интерфейс типа {} не поддерживает индексацию»?

Как получить доступ к вложенным данным JSON в Golang и устранить ошибку «интерфейс типа {} не поддерживает индексацию»?

Опубликовано 10 ноября 2024 г.
Просматривать:697

How do I access nested JSON data in Golang and resolve the \

Доступ к вложенным данным JSON в Golang: разрешение «интерфейс типа {} не поддерживает индексацию». Ошибка

При работе с вложенными ответами JSON в Голанг, важно правильно обрабатывать типы данных. Если вы столкнулись с ошибкой «недопустимая операция: d["data"] (интерфейс типа {} не поддерживает индексацию)», это обычно происходит из-за того, что вы пытаетесь напрямую проиндексировать переменную интерфейса {}.

To Чтобы решить эту проблему, вам необходимо выполнить другое утверждение типа, чтобы указать правильный тип данных. Давайте углубимся в решение:

Утверждение типа для промежуточной карты

Переменная d имеет тип интерфейса{}, который является динамическим типом в Golang. Вам нужно ввести «assert» для определенного типа, чтобы получить доступ к его полям. В этом случае мы знаем, что в ответе есть поле «данные», содержащее сопоставление строк с интерфейсами. Итак, вы можете добавить еще одно утверждение типа для приведения d к map[string]interface{} перед индексацией:

test := d.(map[string]interface{})["data"].(map[string]interface{})["type"]

Теперь тест будет хранить значение поля "type" во вложенной карте данных.

Необязательно Утверждение типа для d

Если вы с самого начала объявляете d как интерфейс карты[string]{}, вы можете пропустить утверждение первого типа:

var d map[string]interface{}
...
test := d["data"].(map[string]interface{})["type"]

Это приведет к прямому приведению d к правильному типу карты, устраняя необходимость в утверждении промежуточного типа.

Заключение

Понимая типы данных и выполняя соответствующие утверждения типов, вы можете получать доступ и работать с вложенными ответами JSON в Golang, не сталкиваясь с ошибками индексации. Помните, интерфейс Go{} универсален, но для доступа к определенным типам может потребоваться дополнительная обработка.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3