Sample code for 30+ languages & platforms
C

JSON: Access Array Values

See more JSON Examples

Demonstrates how to access values in a JSON array.

Chilkat C Downloads

C
#include <C_CkJsonObject.h>
#include <C_CkJsonArray.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkJsonObject json;
    const char *jsonStr;
    HCkJsonArray tagsArray;
    int arraySize;
    int i;
    const char *sValue;
    int iValue;

    success = FALSE;

    json = CkJsonObject_Create();

    jsonStr = "{ \"id\": 1, \"name\": \"A green door\", \"tags\": [\"home\", 22, \"green\"], \"price\": 125 }";

    success = CkJsonObject_Load(json,jsonStr);
    if (success != TRUE) {
        printf("%s\n",CkJsonObject_lastErrorText(json));
        CkJsonObject_Dispose(json);
        return;
    }

    // Get the "tags" array, which contains "home", 22, "green"
    tagsArray = CkJsonObject_ArrayOf(json,"tags");
    if (CkJsonObject_getLastMethodSuccess(json) == FALSE) {
        printf("tags member not found.\n");
        CkJsonObject_Dispose(json);
        return;
    }

    // Get the value at each array index. 
    // Output will be:
    // [0] = home
    // [0] as integer = 0
    // [1] = 22
    // [1] as integer = 22
    // [2] = green
    // [2] as integer = 0

    arraySize = CkJsonArray_getSize(tagsArray);

    for (i = 0; i <= arraySize - 1; i++) {

        sValue = CkJsonArray_stringAt(tagsArray,i);

        printf("[%d] = %s\n",i,sValue);

        iValue = CkJsonArray_IntAt(tagsArray,i);
        printf("[%d] as integer = %d\n",i,iValue);

    }

    CkJsonArray_Dispose(tagsArray);

    // Note: The StringAt method returns the value as a string regardless of the type.

    // The IntAt method returns the value as an integer.  If the value does not convert to 
    // an integer, then 0 is returned


    CkJsonObject_Dispose(json);

    }