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 Sub
Kế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 Sub
Kế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)