JsonConverter là thư viện mã nguồn mở giúp VBA đọc/ghi JSON dễ dàng.
Nguồn chính: https://github.com/VBA-tools/VBA-JSON
Alt + F11 để mở VBA Editor.File → Import File... → chọn JsonConverter.bas.JsonConverter trong Project Explorer.Tools → References → tick Microsoft Scripting Runtime → OK.Những hàm thường dùng:
JsonConverter.ParseJson(jsonText) → trả về Object (Dictionary/Collection) để đọc.JsonConverter.ConvertToJson(vbObject) → chuyển Dictionary/Collection sang chuỗi JSON.Sub ViDuParseJSON()
Dim jsonText As String
Dim json As Object
Dim item As Variant
' Ví dụ JSON nhận từ web
jsonText = "[{""STT"":1,""HoTen"":""Nguyễn An"",""Lop"":""10A1""}," & _
"{""STT"":2,""HoTen"":""Lê Bình"",""Lop"":""10A2""}]"
' Dùng JsonConverter để đọc
Set json = JsonConverter.ParseJson(jsonText)
' Duyệt từng phần tử (mỗi phần tử là 1 Dictionary)
For Each item In json
Debug.Print item("STT"), item("HoTen"), item("Lop")
Next item
End SubKết quả:
1 Nguyễn An 10A1
2 Lê Bình 10A2
Sub ViDuTaoJSON()
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict("user") = "admin"
dict("pass") = "123456"
Dim jsonText As String
jsonText = JsonConverter.ConvertToJson(dict)
Debug.Print jsonText
End SubKết quả: {"user":"admin","pass":"123456"}
{
"status": "ok",
"data": [
{"id": 1, "name": "A"},
{"id": 2, "name": "B"}
]
}Code VBA:
Sub ViDuJSON_Nested()
Dim json As Object
Dim jsonText As String
Dim item As Variant
jsonText = "{""status"":""ok"",""data"":[{""id"":1,""name"":""A""},{""id"":2,""name"":""B""}]}"
Set json = JsonConverter.ParseJson(jsonText)
Debug.Print "Trạng thái:", json("status")
For Each item In json("data")
Debug.Print item("id"), item("name")
Next item
End Sub
If json.Exists("key") Then ... (nếu dùng Dictionary).Microsoft Scripting Runtime để dùng Dictionary/Dictionary methods nhanh hơn.ConvertToJson.Tìm kiếm:
Hướng dẫn sử dụng JsonConverter trong VBA (Access / Excel)