Sample code for 30+ languages & platforms
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

Xbase++
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()