2016-06-16 8 views
2

мне нужно обновить таблицу валюты в MS-Access с JSON файла ниже:Анализировать JSON с помощью VBA (Access 2010)

{ 
"timestamp": 1465843806, 
"base": "CAD", 
"rates": { 
"AED": 2.87198141, 
"AFN": 54.21812828, 
"ALL": 95.86530071, 
"AMD": 374.48549935, 
"ANG": 1.39861507 
} 
} 

Код VBA выглядит следующим образом:

Private Sub cmdJsonTest_Click() 
Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 
MyRequest.Open "GET", "https://website.org/api/latest.json?base=CAD" 
MyRequest.send 
' MsgBox MyRequest.ResponseText 
Dim Json As Object 
Set Json = JsonConverter.ParseJson(MyRequest.ResponseText) 
MsgBox Json("base") 
End Sub 

выше код работает правильно, отображая окно сообщения с САПР, но мне нужно прокрутить и захватить каждый код валюты вместе с его значением скорости. Какой синтаксис я использую для этого? Я могу предоставить код функции Json(), но не видел способа ее загрузки. Любая помощь будет оценена.

ответ

1

Если вы используете этот JSon анализатор https://github.com/VBA-tools/VBA-JSON, используйте этот код

Private Sub IterateDictionary(poDict As Dictionary) 
    Dim key As Variant 

    For Each key In poDict.Keys() 
     If TypeName(poDict(key)) = "Dictionary" Then 
      Debug.Print key 
      IterateDictionary poDict(key) 
     Else 
      Debug.Print key, poDict(key) 
     End If 

    Next 
End Sub 

EDIT: Вы должны изменить Debug.Print с любым процессом, который вы хотите сделать. Чтобы использовать это из вашего кода, введите эту строку после MsgBox.

IterateDictionary Json 
+0

Да, это парсер json, который я использую. Извините, если это глупый вопрос, но не могли бы вы рассказать, как я буду называть вашу функцию функцией? –

+0

@JohnC См. Мой отредактированный ответ. – Jules

+0

Я вижу результаты в окне Immediate, когда я запускаю код, и он работает. Это именно то, что мне нужно было сделать - спасибо! Теперь мне просто нужно выяснить, как лучше обновить валютную таблицу. Мне нужно создать временный набор записей и любой цикл через каждый соответствующий код валюты и обновить или выполнить запрос на обновление. Еще раз спасибо. Как пометить ваше решение как ответ? –

Смежные вопросы