#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:
Я не буду отвечать на ваш вопрос напрямую, но я дам вам подзаголовок, который я использовал в прошлом, чтобы дать вам основу.
- Основной запрос
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 была предоставлена другим пользователем в комментариях.