Sample code for 30+ languages & platforms
DataFlex

Iterate JSON where Member Names are Data Values

See more JSON Examples

Demonstrates how to parse JSON where member names are not keywords, but instead are data values.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoJson
    Integer iNumMembers
    Integer i
    String sName
    Variant vJRecord
    Handle hoJRecord
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End

    Get ComLoadFile Of hoJson "qa_data/json/valuesAsNames.json" To iSuccess

    // Imagine we have JSON such as the following:

    // {
    //   "1680": {
    //     "entity_id": "1680",
    //     "type_id": "simple",
    //     "sku": "123"
    //   },
    //   "1701": {
    //     "entity_id": "1701",
    //     "type_id": "simple",
    //     "sku": "456"
    //   }
    // }
    // 

    // This presents a parsing problem because the member names, such as "1680"
    // are not keywords.  Instead they are data values.  We don't know what they
    // may be in advance.  

    // To solve, we iterate over the members, get the name of each, ...
    Get ComSize Of hoJson To iNumMembers

    For i From 0 To (iNumMembers - 1)

        Get ComNameAt Of hoJson i To sName

        Showln sName ":"
        Get ComObjectAt Of hoJson i To vJRecord
        If (IsComObject(vJRecord)) Begin
            Get Create (RefClass(cComChilkatJsonObject)) To hoJRecord
            Set pvComObject Of hoJRecord To vJRecord
        End

        Get ComStringOf Of hoJRecord "entity_id" To sTemp1
        Showln "entity_id: " sTemp1
        Get ComStringOf Of hoJRecord "type_id" To sTemp1
        Showln "type_id: " sTemp1
        Get ComStringOf Of hoJRecord "sku" To sTemp1
        Showln "sku: " sTemp1

        Send Destroy of hoJRecord

    Loop



End_Procedure