Возникли проблемы с анализом jsonconverter.bas JSON с VBA Excel - PullRequest
0 голосов
/ 21 сентября 2018

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

Public Sub exceljson()
Dim http As Object, JSON As Object, i As Integer
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://wex.nz/api/3/ticker/btc_usd-ltc_usd", False
http.Send
Set JSON = ParseJson(http.responseText)
i = 2
For Each Item In JSON

Sheets(1).Cells(i, 2).Value = Item("high")
Sheets(1).Cells(i, 3).Value = Item("low")
i = i + 1
Next
MsgBox ("complete")
End Sub

Приведенный ниже пример кода работал нормально:

Public Sub exceljson()
Dim http As Object, JSON As Object, i As Integer
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "http://jsonplaceholder.typicode.com/users", False
http.Send
Set JSON = ParseJson(http.responseText)
i = 2
For Each Item In JSON
Sheets(1).Cells(i, 1).Value = Item("id")
Sheets(1).Cells(i, 2).Value = Item("name")
Sheets(1).Cells(i, 3).Value = Item("username")
Sheets(1).Cells(i, 4).Value = Item("email")
Sheets(1).Cells(i, 5).Value = Item("address")("city")
Sheets(1).Cells(i, 6).Value = Item("phone")
Sheets(1).Cells(i, 7).Value = Item("website")
Sheets(1).Cells(i, 8).Value = Item("company")("name")
i = i + 1
Next
MsgBox ("complete")
End Sub

IЯ не уверен, что разница между этими двумя сайтами.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 21 сентября 2018

Вам необходимо более внимательно изучить структуру JSON.

Поскольку вы решили не объявлять конкретно вашу переменную Item, она неявно объявляется как Variant (что в данном случае нормально).).

В вашем первом макросе Item - это String, поэтому вам нужно ссылаться на него как на ключ.

Во втором макросе Item будетDictionary объект, так что вы можете ссылаться на него так, как вы это сделали.

Итак, в вашем первом макросе вам нужно что-то вроде:

For Each Item In JSON
    Sheets(1).Cells(i, 2).Value = JSON(Item)("high")
    Sheets(1).Cells(i, 3).Value = JSON(Item)("low")
    i = i + 1
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...