Sample code for 30+ languages & platforms
Swift

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 Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    let json = CkoJsonObject()!

    // First build simple JSON..
    json.updateInt(jsonPath: "test.abc", value: 100)

    json.emitCompact = false
    print("\(json.emit()!)")

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

    var path: String? = "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?
    var val: Int = json.int(of: path).intValue
    print("val = \(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..
    var wasFound: Bool = json.lastMethodSuccess
    print("wasFound = \(wasFound) (not a valid indicator)")

    // 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(jsonPath: path)
        print("wasFound = \(wasFound)")
        if wasFound == true {
            print("The value was present and is 0.")
        }
        else {
            print("no member is present at test.notHere")
        }

    }
    else {
        print("val = \(val)")
    }

    // Alternatively, you could check to see if the member exists beforehand..
    if json.hasMember(jsonPath: path) == true {
        print("val = \(json.int(of: path).intValue)")
    }
    else {
        print("no member at \(path!)")
    }


}