Sample code for 30+ languages & platforms
Unicode C++

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 Unicode C++ Downloads

Unicode C++
#include <CkJsonObjectW.h>

void ChilkatSample(void)
    {
    bool success = false;

    CkJsonObjectW json;

    // First build simple JSON..
    json.UpdateInt(L"test.abc",100);

    json.put_EmitCompact(false);
    wprintf(L"%s\n",json.emit());

    // This is our JSON:
    // {
    //   "test": {
    //     "abc": 100,
    //   }
    // }

    const wchar_t *path = L"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?
    int val = json.IntOf(path);
    wprintf(L"val = %d\n",val);

    // 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..
    bool wasFound = json.get_LastMethodSuccess();
    wprintf(L"wasFound = %d (not a valid indicator)\n",wasFound);

    // Instead, if the returned value is 0, we can double-check to see if the member was truly there..
    if (val == 0) {
        wasFound = json.HasMember(path);
        wprintf(L"wasFound = %d\n",wasFound);
        if (wasFound == true) {
            wprintf(L"The value was present and is 0.\n");
        }
        else {
            wprintf(L"no member is present at test.notHere\n");
        }

    }
    else {
        wprintf(L"val = %d\n",val);
    }

    // Alternatively, you could check to see if the member exists beforehand..
    if (json.HasMember(path) == true) {
        wprintf(L"val = %d\n",json.IntOf(path));
    }
    else {
        wprintf(L"no member at %s\n",path);
    }
    }