0
内の文字列のJSON配列を解析するには、(その配列ではありませんことを示す?)で:種類の不一致エラー(アレイ):私は、「型の不一致エラー」を受信し続けるVBA
Sub FillTaxiInfo
For i = 0 To UBound(data("prices")) - 1
コードがをしようとしています解析JSON(以下「価格」を参照)から:
{"id":1,"prices":[{"name":"expressTaxi","fare":{"fareType":"standard", "base":"$2.50"...}}
私はブレークポイントを置いて、「価格」を調べるときは、それは価値が '式のコンテキストで定義されていると「タイプ」が空であるされていないことを私に伝えます。
改善のための他の提案があれば幸いです。
私の完全なコード:
Option Explicit
Sub Run()
Dim myUrls As Variant
myUrls = Array("URL1, URL2, URL3")
FillMultipleCityInfo myUrls, ActiveWorkbook
End Sub
Function GetJson(ByVal url As String) As Dictionary
With New WinHttpRequest
.Open "GET", url
.Send
Set GetJson = JsonConverter.ParseJson(.ResponseText)
End With
End Function
Sub FillTaxiInfo(data As Dictionary, sheet As Worksheet)
Dim i As Integer, taxi As Dictionary
For i = 0 To UBound(data("prices")) - 1
Set taxi = data("prices")(i)
If taxi.Exists("name") Then
sheet.Cells(i, 1) = taxi("name")
sheet.Cells(i, 2) = taxi("fare")("fareType")
End If
Next i
End Sub
Sub FillMultipleCityInfo(urls As Variant, book As Workbook)
Dim i As Integer, data As Dictionary, sheet As Worksheet
For i = 0 To UBound(urls) - 1
Set data = GetJson(urls(i))
Set sheet = book.Sheets(i + 1)
FillTaxiInfo data, sheet
Next i
End Sub
"a"、 "a"は私を混乱させます。ほとんどの場合、キーと値のペアのように見えます。具体的な例を使用して、私は以下を使用します: '。"価格 "、"名前 "は両方とも"キー "で、"名前 "は"価格 "より低いレベル/インデックスです。 さらに、これらの値を上記のようにセルに割り当てると、下の反復を次のように構造化します:'i(i)を初期化した後に' sheet.Cells(i、1)= Debug.Print dict 'と' i + 1'でレイヤ化しますか? – Kyle
"a"、 "a"は実際にはキー値のペアです。ディクショナリデータ型に必要です。キーは一意の要素になりますが、値は一致するキーが見つかったときに返される値です。あなたの特定のプログラムが何をする必要があるのか再度は分かりませんが、 "型不一致エラー"(配列ではないことを示していますか?)という質問に答えたと思います。 ' –
私は不幸にも静的な値を返します解決策は私のために働かないでしょう。私は静的なキーを持っているWebからJSONを拝借していますが、値は可変/不明です。 – Kyle