Как получить, («поля») для работы в VBA-JSON

Резюме

Я пытаюсь получить доступ к глубоким уровням вложенного JSON, который возвращается из API, с которым я работаю в данный момент. Использование VBA-JSON в этом процессе было довольно простым, но я столкнулся с небольшим дорожным блоком. По большей части, у меня есть эта библиотека для правильной работы, но я получаю ошибку в любое время, когда я пытаюсь захватить элемент, который вложен в ответ JSON ( более 2 уровней JSON ). Я собираюсь отправить этот пост, а затем я пойду и соберу некоторые коды ошибок, которые я получаю. Сверху, я знаю, что я получаю ошибку времени выполнения «13», когда пытаюсь использовать приведенный ниже код, который не работает. Я думаю ( может быть неправильно ), что я достаточно умен, чтобы понять ошибку несоответствия типа, но я не знаю, как это исправить.

Это работает

For i = 1 To 20 ActiveSheet.Cells(i + 1, 5) = Json("issues")(i)("key") ActiveSheet.Cells(i + 1, 6) = Json("issues")(i)("id") Next 

Не работает

 For i = 1 To 20 ActiveSheet.Cells(i + 1, 7) = Json("fields")(i)("summary") Next 

Ни один из них не работал

 ActiveSheet.Cells(i + 1, 7) = Json("fields")(i)("summary") ActiveSheet.Cells(i + 1, 7) = Json("fields")("summary") ActiveSheet.Cells(i + 1, 7) = Json("issues")("fields")("summary") ActiveSheet.Cells(i + 1, 7) = Json("fields")("assignee")(i)("name") ActiveSheet.Cells(i + 1, 7) = Json("issues")("fields")("assignee")(i)("name") 

Обновлено с некоторыми JSON

Я редактировал JSON, который возвращается по соображениям конфиденциальности ( очевидно ).

 { "expand": "schema,names", "startAt": 0, "maxResults": 50, "total": 28, "issues": [ { "expand": "", "id": "94581", "self": "", "key": "", "fields": { , "assignee": {} , "status": {} , "votes": {} , "summary": "" , , "issuetype": {} , "timespent": null, } } , {} , {} , {} ] } 

Согласно этой структуре данных, мой код должен смотреть в нужное место, не так ли?

Мысли? 🙂


PS: Извините, если жаргон выключен, я разработчик по хобби, а не по работе. 🙂

Проблема

Вложенные массивы были на самом деле проблемой. 2-й уровень элементов JSON не был массивом, а «полями» были.

Чтобы решить проблему, нам нужно добавить (i + 1) в код.

Пример рабочего кода

 '''''''' ' Loop ' '''''''' For i = 1 To 20 ActiveSheet.Cells(i + 1, 5) = Json("issues")(i)("key") ActiveSheet.Cells(i + 1, 6) = Json("issues")(i)("id") ActiveSheet.Cells(i + 1, 7) = Json("issues")(i + 1)("fields")("summary") ActiveSheet.Cells(i + 1, 8) = Json("issues")(i + 1)("fields")("watches")("watchCount") ActiveSheet.Cells(i + 1, 9) = Json("issues")(i + 1)("fields")("workratio") Next 

Обновить 🙁

Итак, я получил всю свою настройку кода для запуска моего отчета, и он работал, а затем он случайным образом останавливается ( я смотрел, как это делается в строке 16 или около того ) и дает мне ошибку несоответствия типа.

Как работали строки 1-15, а затем внезапно возникла ошибка несоответствия типа?

лол…

Отладка сейчас …

Обновление 2 🙂

Простое смешивание с кодовой структурой не было проблемой, и решение, которое я опубликовал ниже, работает правильно.

  • howto Сериализовать вложенную коллекцию с использованием JsonWriter в C #
  • Обрабатывать объект JSON в ответе XMLHttp в коде Excel VBA
  • Ошибка компиляции VBA JSONLib
  • Данные Parse Json в Excel
  • Обновить ячейку excel с помощью запроса JSON
  • Как получить значение из вложенного / помещенного в Excel объекта Excel - данные из json
  • C # Interop добавляет значения JSON к рабочему листу
  • iOS простой способ конвертировать и хранить большой стол
  • AngularJS $ http-post - преобразовать двоичный файл в excel и загрузить
  • c # parse to json format
  • Matplotlib / Pandas для создания определенного графика из Python dict / JSON
  • Interesting Posts

    Разностная гистограмма Excel / Matlab

    Значения ячейки Excel, содержащие время, сообщаются как 12 часов вместо 24 часов с помощью JExcelApi

    Excel vba – передача рабочего листа публичной функции

    Как экспортировать таблицу из Microsoft SQL Server в Excel?

    Excel vba: ошибка, скрывающая вычисленное поле в сводной таблице

    Excel для вычисления значений для каждой ячейки только один раз

    Скопируйте и переместите весь лист в другую книгу. 1 мил строк до 65536 строк

    Как заменить все повторяющиеся значения в Excel на формулу?

    Что такое критерии фильтрации таблицы? (В качестве одного из или массива выбранных значений из раскрывающегося списка заголовка столбца таблицы)

    Создать общедоступную переменную, содержащую данные из WorkSheet

    Хранение выходных данных приращения даты в цикле for в R

    Как динамически генерировать список проверки данных из строк таблицы

    Как мне динамически изменить размер массива в VBA? Я продолжаю получать индексы и индексы

    Как удалить пустой лист в книге с помощью VBA?

    Продавец Amazon Fetch с VBA

    Давайте будем гением компьютера.