DataFlex
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
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