Skip to content

VBMAN.Json - JSON Operation Object ​

Overview ​

VBMAN.Json provides JSON data parsing and generation functionality, supporting nested objects, arrays, and is the preferred solution for handling JSON data in VB6.

Core Features ​

  • Bidirectional Conversion: Supports JSON string parsing and object encoding
  • Nested Support: Unlimited level nested objects and arrays
  • Type Safety: Automatic data type conversion handling
  • Formatted Output: Supports indentation beautification output
  • Chain Building: Fluent JSON building API

Properties ​

PropertyTypeDescription
RootcJsonRoot node object
Item(key)VariantAccess value of specified key (default member)

Methods ​

Encode ​

Encode object to JSON string

vb
Public Function Encode(Optional obj As Object, Optional Indent As Integer = 0, Optional UseDoubleQuotes As Boolean = True) As String

Parameters:

  • obj - Object to encode (default uses Root)
  • Indent - Indentation spaces (0=no line breaks)
  • UseDoubleQuotes - Use double quotes (default True)

Example:

vb
' Simple encoding
Dim json As New cJson
json("name") = "Zhang San"
json("age") = 25

Dim jsonStr As String
jsonStr = json.Encode()
' Result: {"name":"Zhang San","age":25}

' Formatted output
Dim prettyJson As String
prettyJson = json.Encode(, 2, True)
' Result:
' {
'   "name": "Zhang San",
'   "age": 25
' }

Decode ​

Parse JSON string

vb
Public Function Decode(jsonString As String) As cJson

Example:

vb
' Parse JSON
Dim jsonStr As String
jsonStr = "{""name"":""Zhang San"",""age"":25}"

Dim json As cJson
Set json = VBMAN.Json.Decode(jsonStr)

Debug.Print json("name")   ' Zhang San
Debug.Print json("age")    ' 25

Item ​

Access or set value

vb
' Read
Dim value As Variant
value = json("key")

' Write
json("key") = "value"
json("number") = 123
json("bool") = True

NewItem / NewItems ​

Create nested object/array

vb
Public Function NewItem() As cJson
Public Function NewItems(key As String) As cJson

Example:

vb
' Create nested object
Dim user As New cJson
user("id") = 1
user("name") = "Zhang San"

With user.NewItem("address")
    .Item("city") = "Beijing"
    .Item("zip") = "100000"
End With

' Create array
Dim users As New cJson

With users.NewItems("data")
    With .NewItem()
        .Item("name") = "Zhang San"
        .Item("age") = 25
    End With
    With .NewItem()
        .Item("name") = "Li Si"
        .Item("age") = 30
    End With
End With

Debug.Print users.Encode(, 2)
' Result:
' {
'   "data": [
'     {"name":"Zhang San","age":25},
'     {"name":"Li Si","age":30}
'   ]
' }

Exists ​

Check if key exists

vb
Public Function Exists(key As String) As Boolean

Example:

vb
If json.Exists("email") Then
    Debug.Print json("email")
Else
    Debug.Print "email does not exist"
End If

Remove ​

Delete key

vb
Public Sub Remove(key As String)

Comprehensive Examples ​

Example 1: Build Complex JSON ​

vb
Private Sub BuildComplexJson()
    Dim root As New cJson
    
    ' Basic info
    root("status") = "success"
    root("message") = "Operation successful"
    root("timestamp") = Format(Now, "yyyy-MM-ddThh:mm:ss")
    
    ' User data array
    With root.NewItems("users")
        ' First user
        With .NewItem()
            .Item("id") = 1
            .Item("name") = "Zhang San"
            .Item("email") = "zhangsan@example.com"
            
            ' Nested address
            With .NewItem("address")
                .Item("province") = "Beijing"
                .Item("city") = "Beijing City"
                .Item("detail") = "Chaoyang District xxx Street"
            End With
            
            ' Nested orders array
            With .NewItems("orders")
                With .NewItem()
                    .Item("order_id") = "ORD001"
                    .Item("amount") = 199.99
                End With
                With .NewItem()
                    .Item("order_id") = "ORD002"
                    .Item("amount") = 299.99
                End With
            End With
        End With
        
        ' Second user
        With .NewItem()
            .Item("id") = 2
            .Item("name") = "Li Si"
            .Item("email") = "lisi@example.com"
        End With
    End With
    
    ' Pagination info
    With root.NewItem("pagination")
        .Item("page") = 1
        .Item("page_size") = 20
        .Item("total") = 100
    End With
    
    ' Output JSON
    Dim jsonStr As String
    jsonStr = root.Encode(, 2, True)
    Debug.Print jsonStr
End Sub

Example 2: Parse API Response ​

vb
Private Sub ParseApiResponse(response As String)
    Dim json As cJson
    Set json = VBMAN.Json.Decode(response)
    
    ' Check status
    If json("status") = "success" Then
        ' Get user array
        Dim users As cJson
        Set users = json("data")("users")
        
        ' Iterate users
        Dim i As Integer
        For i = 0 To users.Count - 1
            Dim user As cJson
            Set user = users(i)
            
            Debug.Print "ID: " & user("id")
            Debug.Print "Name: " & user("name")
            Debug.Print "Email: " & user("email")
            
            ' Check if address exists
            If user.Exists("address") Then
                Debug.Print "City: " & user("address")("city")
            End If
            
            Debug.Print "---"
        Next i
        
        ' Get pagination info
        Debug.Print "Total: " & json("data")("pagination")("total")
    Else
        Debug.Print "Error: " & json("message")
    End If
End Sub

Example 3: Usage in Real Projects (from demos) ​

vb
' Build JSON response
Public Sub Json(ctx As cHttpServerContext)
    Dim ID As Long: ID = ctx.Request.QueryString("id")
    
    With New cJson
        .Item("id") = ID
        .Item("face") = ChrW(&H263A)
        .Item("timestamp") = Now
        .Item("status") = "success"
        
        ctx.Response.Json .Root
    End With
End Sub

' Parse request data
Public Sub HandleRequest(ctx As cHttpServerContext)
    Dim requestData As String
    requestData = ctx.Request.Body
    
    Dim json As cJson
    Set json = VBMAN.Json.Decode(requestData)
    
    Dim username As String
    Dim password As String
    
    username = json("username")
    password = json("password")
    
    ' Process login...
End Sub

Example 4: Database Record to JSON ​

vb
Private Sub RecordsetToJson(rs As ADODB.Recordset)
    Dim root As New cJson
    
    ' Add metadata
    root("count") = rs.RecordCount
    root("timestamp") = Now
    
    ' Add data array
    With root.NewItems("data")
        Do While Not rs.EOF
            With .NewItem()
                Dim i As Integer
                For i = 0 To rs.Fields.Count - 1
                    .Item(rs.Fields(i).Name) = rs.Fields(i).Value
                Next i
            End With
            rs.MoveNext
        Loop
    End With
    
    ' Output
    Debug.Print root.Encode(, 2)
End Sub

Example 5: INI Config to JSON ​

vb
Private Sub IniToJson()
    VBMAN.Ini.LoadFrom App.Path & "\\config.ini"
    
    Dim json As New cJson
    
    ' Convert all Sections
    Dim sectionKey As Variant
    For Each sectionKey In VBMAN.Ini.Root.Keys
        With json.NewItem(CStr(sectionKey))
            Dim key As Variant
            For Each key In VBMAN.Ini.Root(sectionKey).Keys
                .Item(key) = VBMAN.Ini.Root(sectionKey)(key)
            Next key
        End With
    Next sectionKey
    
    ' Save as JSON file
    VBMAN.FileEx.SetBufferText(json.Encode(, 2), "UTF-8").SaveData App.Path & "\\config.json"
End Sub

Best Practices ​

  1. Use Parameters: When building JSON, try to use NewItem/NewItems
  2. Check Existence: Use Exists to check if key exists before reading
  3. Error Handling: Add error handling when parsing JSON
  4. Type Attention: VB6 is weakly typed, note the difference between numbers and strings
  5. Formatted Output: Use indentation formatting for easier reading during debugging

VB6 and LOGO copyright of Microsoft Corporation