JSONのKey一覧を取得する方法を紹介します。JavaScriptでいうところのObject.keys()に相当します。
今回は以下のようなJSONを準備しました。Key一覧を取得するので、key1 , key2, key3,・・・key10が取得できれば良いことになります。
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4",
"key5": "value5",
"key6": "value6",
"key7": "value7",
"key8": "value8",
"key9": "value9",
"key10": "value10"
}
JSONのValue一覧が取得したい場合は以下記事を参考にしてください
事前準備
JSONパーサーを自前で準備するのは大変なので、VBA-JSONを利用します。設定方法は以下の記事を参照してください。
KeysとFor Each Inで解決する
JSONパーサは、JSON文字列をDictionary型(またはCollection型)に変換します。Dictionary型のKey一覧取得と同様な方法を利用することができます。Key一覧取得の場合は、For Each Inを利用することになります。
サンプログラム(コピペでOK)
記載方法は2つあります。方法1の方が速度が速いです。ただし、処理数が数十件ならば誤差で、10万件以上処理をする場合に考慮が必要なレベルです。可読性を重要視するならば方法2ですね。ご自身の環境に応じて選択してください。
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 k As Variant ' For Each に渡す変数は、必ずVariant型
' 方法1
For Each k In jsonObj
Debug.Print k
Next
' 方法2
For Each k In jsonObj.Keys
Debug.Print k
Next
Debug.Print "キーの数:" & jsonObj.Count ' キーの数はCount変数で取得できます
End Sub