VBA API Преобразует ответ JSON и помещает его в лист Excel

#json #excel #vba

Вопрос:

Я не самый лучший с кодировкой vba.. мы будем очень признательны за некоторую помощь.

У меня есть некоторый код, который я получаю через api, и ответ возвращается в JSON. Мне нужно это преобразовать, чтобы затем его можно было вставить в ячейки. каждый запрос представляет собой один ответ на один адрес. Пожалуйста, не могли бы вы немного помочь с этим.

Код, который я сделал, приведен ниже, который работает и дает мне правильный ответ;

 Sub api_request()

'Declare variables
Dim xml_obj As MSXML2.XMLHTTP60

'Create a reference to the Microsoft XML library
Set xml_obj = New MSXML2.XMLHTTP60

'Define URL Components
base_url = "https://api.getaddress.io/find/"

param_postcode = InputBox("Postcode Here")
param_postcode_val = "/"

param_number = InputBox("Number or Name")
param_number_val = "/"

param_api = "?api-key="
param_api_Value = "dAAsSIXtn9iKsObVq3L1kA11823=true"

'Combine all the different components into a single URL
api_url = base_url   _
          param_postcode   param_postcode_val   _
          param_number   param_number_val   _
          param_api   param_api_Value
              
'Open a new request, specify the method and the URL
xml_obj.Open bstrMethod:="GET", bstrURL:=api_url

'Send the request
xml_obj.send

'Print the status response
Debug.Print xml_obj.responseText

    End
End Sub
 

Это текст выходного ответа;

{«почтовый индекс»:»MK13 0EZ»,»широта»:52.066448,»долгота»:-0.783306,»адреса»:[{«форматированный адрес»:[«10 Мидс Клоуз»,»»,»»,»Нью-Брэдвелл, Милтон-Кейнс»,»Бакингемшир»],»проезд»:»Мидс Close»,»building_name»:»»,»sub_building_name»:»»,»sub_building_number»:»»,»building_number»:»10″,»line_1″:»33 Мидс Клоуз»,»строка 2″:»»,»строка 3″:»»,»строка 4″:»»,»населенный пункт»:»Нью-Брэдвелл»,»город или город»:»Милтон Кейнс»,»округ»:»Бакингемшир»,»округ»:»Милтон Кейнс»,»страна»:»Англия»}]}

Мне нужен этот приведенный выше вывод на рабочий лист в Excel, а затем любые другие запросы, которые выполняются, помещаются под указанным выше ответом и т. Д. Я действительно надеюсь, что кто-то сможет мне помочь.

Спасибо

Комментарии:

1. Загляните в github.com/VBA-tools/VBA-JSON — Затем используйте его для преобразования выходных данных JSON в словарь, по которому вы можете перемещаться, чтобы делать то, что хотите.

Ответ №1:

Я не буду отвечать на ваш вопрос напрямую, но я дам вам подзаголовок, который я использовал в прошлом, чтобы дать вам основу.

  1. Основной запрос
      Dim XMLPage As New MSXML2.XMLHTTP60
     Dim HTMLDoc As New MSHTML.HTMLDocument
     Dim Code As String
     Dim JSON As Object
     Dim Key As Variant
    
     Code = "500002"
    
     XMLPage.Open "GET", "https://api.bseindia.com/BseIndiaAPI/api/StockTrading/w?flag=amp;quotetype=EQamp;scripcode=" amp; Code, False
     XMLPage.send
    
     Set JSON = JsonConverter.ParseJson(XMLPage.responseText)
    
     For Each Key In JSON
         Debug.Print Key amp; ": " amp; JSON(Key)
     Next Key
     

Ссылка на конвертер JSON была предоставлена другим пользователем в комментариях.