2023-03-03 17:07:28 -05:00
|
|
|
Attribute VB_Name = "JsonDebugPrint"
|
|
|
|
Option Explicit
|
|
|
|
|
|
|
|
|
|
|
|
Public Sub TestPrintJSON()
|
2023-03-09 10:32:58 -05:00
|
|
|
PrintJSON ParseJson("[1,2,3]")
|
|
|
|
PrintJSON ParseJson("[{""a"":123,""b"":[56,7,78]}]")
|
2023-03-03 17:07:28 -05:00
|
|
|
End Sub
|
|
|
|
|
|
|
|
' This is definitely NOT a pretty printer. It was written merely as a debugging
|
|
|
|
' tool to make sense of the objects that come out of JsonConverter.ParseJSON.
|
|
|
|
' It doesn't format in the best way possible, but it does provide a semi-readable
|
|
|
|
' view of the data in the JSON object.
|
|
|
|
' Phil Runninger 3/1/2023
|
|
|
|
'
|
|
|
|
Public Sub PrintJSON(obj As Variant, Optional level As Integer = 0)
|
|
|
|
Dim itm As Variant
|
|
|
|
Dim first As Boolean
|
|
|
|
Select Case TypeName(obj)
|
|
|
|
Case "Dictionary"
|
|
|
|
Debug.Print String(level * 2, " "); "{"
|
|
|
|
first = True
|
|
|
|
For Each itm In obj
|
|
|
|
If Not first Then Debug.Print String((level + 1) * 2, " "); ","
|
|
|
|
first = False
|
|
|
|
Debug.Print String((level + 1) * 2, " "); itm; ":";
|
|
|
|
PrintJSON obj(itm), level + 1
|
|
|
|
Next
|
|
|
|
Debug.Print String(level * 2, " "); "}"
|
|
|
|
Case "Collection"
|
|
|
|
Debug.Print String(level * 2, " "); "["
|
|
|
|
first = True
|
|
|
|
For Each itm In obj
|
|
|
|
If Not first Then Debug.Print String(level * 2, " "); ","
|
|
|
|
first = False
|
|
|
|
PrintJSON itm, level + 1
|
|
|
|
Next
|
|
|
|
Debug.Print String(level * 2, " "); "]"
|
|
|
|
Case Else
|
|
|
|
Debug.Print String(level * 2, " "); obj;
|
|
|
|
End Select
|
|
|
|
End Sub
|
|
|
|
|