【EXCEL VBA】JSONのValue一覧を取得したい

今回はJSONのValue一覧を取得する方法を紹介します。JavaScirptでいうところのObject.values()に相当します。

今回は以下のようなJSONを準備しました。Value一覧を取得するので、value1 , value2, value3,・・・value10が取得できれば良いことになります。

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3",
  "key4": "value4",
  "key5": "value5",
  "key6": "value6",
  "key7": "value7",
  "key8": "value8",
  "key9": "value9",
  "key10": "value10"
}

JSONのキー一覧を取得したい場合は、以下記事を参考にしてください。

事前準備

JSONパーサーを自前で準備するのは大変なので、VBA-JSONを利用します。設定方法は以下の記事を参照してください。

ItemsとFor Each Inで解決する

JSONパーサは、JSON文字列をDictionary型(またはCollection型)に変換します。Dictionary型のValue一覧取得と同様な方法を利用することができます。Value一覧取得の場合は、ItemsとFor Each Inを利用することになります。

サンプログラム(コピペでOK)

Option Explicit

Sub sample()
    Dim jsonStr As String
    jsonStr = "{""key1"":""value1"",""key2"":""value2"",""key3"":""value3"",""key4"":""value4"",""key5"":""value5"",""key6"":""value6"",""key7"":""value7"",""key8"":""value8"",""key9"":""value9"",""key10"":""value10""}"

    Dim jsonObj As Object
    Set jsonObj = JsonConverter.ParseJson(jsonStr)
    
    Dim v As Variant        ' For Each に渡す変数は、必ずVariant型
    
    For Each v In jsonObj.Items
        Debug.Print v
    Next
    
    Debug.Print "キーの数:" & jsonObj.Count   ' キーの数はCount変数で取得できます

End Sub