DataFlex
DataFlex
Check if Integer Exists at JSON Path
Demonstrates how to get an integer value at a JSON path, and how to check to see if it exists.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoJson
String sPath
Integer iVal
Boolean iWasFound
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
// First build simple JSON..
Get ComUpdateInt Of hoJson "test.abc" 100 To iSuccess
Set ComEmitCompact Of hoJson To False
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
// This is our JSON:
// {
// "test": {
// "abc": 100,
// }
// }
Move "test.notHere" To sPath
// The call to IntOf will return 0, because it's not present.
// But how do we know if it really was present, and the value was truly 0?
Get ComIntOf Of hoJson sPath To iVal
Showln "val = " iVal
// We cannot use LastMethodSuccess because LastMethodSuccess only applies
// to methods that:
// - return a string
// - return a new Chilkat object, binary bytes, or a date/time.
// - returns a boolean status where True = success and False = failed.
// - returns an integer where failure is defined by a return value less than zero.
// The IntOf method fits none of these requirements, and therefore the LastMethodSuccess
// is not a valid indicator..
Get ComLastMethodSuccess Of hoJson To iWasFound
Showln "wasFound = " iWasFound " (not a valid indicator)"
// Instead, if the returned value is 0, we can double-check to see if the member was truly there..
If (iVal = 0) Begin
Get ComHasMember Of hoJson sPath To iWasFound
Showln "wasFound = " iWasFound
If (iWasFound = True) Begin
Showln "The value was present and is 0."
End
Else Begin
Showln "no member is present at test.notHere"
End
End
Else Begin
Showln "val = " iVal
End
// Alternatively, you could check to see if the member exists beforehand..
Get ComHasMember Of hoJson sPath To bTemp1
If (bTemp1 = True) Begin
Get ComIntOf Of hoJson sPath To iTemp1
Showln "val = " iTemp1
End
Else Begin
Showln "no member at " sPath
End
End_Procedure