ExcelVBAでJSONオブジェクトを作る
Jsonデータ(Jsonオブジェクト)を生成するには、辞書(Dictionary)オブジェクトや配列(Collection)オブジェクトを生成して要素を追加する。
例えば以下のようなJsonデータの生成を考えてみる。
1{
2 "infomation": {
3 "myname": "Mike",
4 "friends": [
5 ["Tom","man",24],
6 ["Sherry","woman",20],
7 ["David","man",38]
8 ]
9 }
10}
このJsonを解析すると、概ね以下のようになっている。
・infomation は、辞書形式となっている。
・infomationのfriendsキーの要素は配列となっており、その配列要素も配列となっている。
よって、作るべきオブジェクトは以下① 〜 ④。
① 以下の② 〜 ④をまとめる辞書オブジェクト
② infomationの辞書オブジェクト
③ friendsの配列オブジェクト
④ ③の要素の配列オブジェクト
以下にサンプルコードを示す。
なお、JsonConverter(こちらを参照)というモジュールを別途導入しており、これを使って生成したオブジェクトをDebug.Printし内容を確認している(以下35行目参照)。
1Sub test()
2
3 Dim JsonObject As Object
4 Dim Infomation As Object
5 Dim friends As Object
6 Dim friend_wk As Object
7 Set JsonObject = New Dictionary
8 Set Infomation = New Dictionary
9 Set friends = New Collection
10 Set friend_wk = New Collection
11
12 friend_wk.Add "Tom"
13 friend_wk.Add "man"
14 friend_wk.Add "24"
15 friends.Add friend_wk
16
17 Set friend_wk = Nothing
18 Set friend_wk = New Collection
19 friend_wk.Add "Sherry"
20 friend_wk.Add "woman"
21 friend_wk.Add "20"
22 friends.Add friend_wk
23
24 Set friend_wk = Nothing
25 Set friend_wk = New Collection
26 friend_wk.Add "David"
27 friend_wk.Add "man"
28 friend_wk.Add "38"
29 friends.Add friend_wk
30
31 Infomation.Add "myname", "Mike"
32 Infomation.Add "friends", friends
33 JsonObject.Add "infomation", Infomation
34
35 Debug.Print JsonConverter.ConvertToJson(JsonObject, Whitespace:=2)
36
37End Sub