Xbase++
Xbase++
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 Xbase++ Downloads
LOCAL nSuccess
LOCAL oJson
LOCAL cPath
LOCAL nVal
LOCAL nWasFound
nSuccess := 0
oJson := CreateObject("Chilkat.JsonObject")
// First build simple JSON..
oJson:UpdateInt("test.abc", 100)
oJson:EmitCompact := 0
? oJson:Emit()
// This is our JSON:
// {
// "test": {
// "abc": 100,
// }
// }
cPath := "test.notHere"
// 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?
nVal := oJson:IntOf(cPath)
? "val = " + Str(nVal)
// 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 1 = success and 0 = 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..
nWasFound := oJson:LastMethodSuccess
? "wasFound = " + Str(nWasFound) + " (not a valid indicator)"
// Instead, if the returned value is 0, we can double-check to see if the member was truly there..
IF (nVal == 0)
nWasFound := oJson:HasMember(cPath)
? "wasFound = " + Str(nWasFound)
IF (nWasFound == 1)
? "The value was present and is 0."
ELSE
? "no member is present at test.notHere"
ENDIF
ELSE
? "val = " + Str(nVal)
ENDIF
// Alternatively, you could check to see if the member exists beforehand..
IF (oJson:HasMember(cPath) == 1)
? "val = " + Str(oJson:IntOf(cPath))
ELSE
? "no member at " + cPath
ENDIF
oJson:destroy()