現在、VBAでWeb APIを叩く処理を書いています。
そのWeb APIはJSON形式でレスポンスを返すのですが、それを簡単にパースする方法はないでしょうか?
例えば、次のようなレスポンスだった場合
{
"index": 0,
"guid": "f1349c97-af4c-404d-90fd-a33a998e05d0",
"isActive": true,
"balance": "$3,042.22",
"picture": "http://placehold.it/32x32",
"age": 38,
"eyeColor": "brown",
"name": "Frances Crosby",
"gender": "female",
"company": "MAGNINA",
"email": "francescrosby@magnina.com",
"phone": "+1 (838) 531-3393",
"address": "599 Clinton Avenue, Kidder, Federated States Of Micronesia, 8643",
"about": "Ullamco aute deserunt elit adipisicing sunt nisi quis irure occaecat exercitation esse. Esse excepteur ea est aute quis sint nisi quis aliqua officia. Enim deserunt duis sunt in ut cillum deserunt aute ullamco magna incididunt. Excepteur adipisicing minim culpa fugiat sunt.\r\n",
"registered": "2017-12-10T06:49:32 -09:00",
"latitude": -1.602688,
"longitude": -84.420106,
"friends": [
{
"id": 0,
"name": "Bobbie Ayala"
},
{
"id": 1,
"name": "Dina Butler"
},
{
"id": 2,
"name": "Effie Le"
}
],
"greeting": "Hello, Frances Crosby! You have 6 unread messages.",
"favoriteFruit": "banana"
}
friendsの一番目の要素のname属性をこんな感じで取得したいです。
res.friends[0].name
よろしくお願いいたします。
orion
2019.02.11 00:26:41
13757
こんにちは、Excel Beer運営です。ご投稿ありがとうございます。
VBAでJSON文字列をパースするには、ScriptControlを通じて、JScriptを利用するのが良いかと思います。
次に「res.friends[0].name」の値を取得するための、サンプルコードをお示しいたします。
(A1セルに上述のJSON文字列が含まれていることを前提にしています。)
Option Explicit
Sub ReadJsonTest()
' A1セルからJSON文字列を取得
Dim str: str = Range("A1").Value
' JSON文字列をデシリアライズ(JScriptを利用)
Dim json: Set json = ParseJson(str)
' JSONのres.friends[0].name要素を表示
MsgBox CallByName(CallByName(CallByName(json, "friends", VbGet), 0, VbGet), "name", VbGet)
End Sub
Function ParseJson(str)
Dim scriptControl: Set scriptControl = CreateObject("ScriptControl")
scriptControl.Language = "JScript"
scriptControl.AddCode "function Parse(str) { return eval('(' + str + ')'); };"
Dim json: Set json = scriptControl.CodeObject.Parse(str)
Set ParseJson = json
End Function
記事にもさせていただきました。
https://excel.beer/excel/vba/string/parse-json
excelbeer
2019.02.21 12:08:48
(2019.04.23 23:22:04 更新)
![]()
ありがとうございます。うまくいきました!
|
コメントするには ログイン していただく必要があります。