Sample code for 30+ languages & platforms
Go

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

Go
    success := false

    json := chilkat.NewJsonObject()

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

    json.SetEmitCompact(false)
    fmt.Println(*json.Emit())

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

    path := "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?
    val := json.IntOf(path)
    fmt.Println("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..
    wasFound := json.LastMethodSuccess()
    fmt.Println("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(path)
        fmt.Println("wasFound = ", wasFound)
        if wasFound == true {
            fmt.Println("The value was present and is 0.")
        } else {
            fmt.Println("no member is present at test.notHere")
        }

    } else {
        fmt.Println("val = ", val)
    }

    // Alternatively, you could check to see if the member exists beforehand..
    if json.HasMember(path) == true {
        fmt.Println("val = ", json.IntOf(path))
    } else {
        fmt.Println("no member at ", path)
    }


    json.DisposeJsonObject()