/* Collection of code snippets by Arne Vajhøj */
/* (from articles on eksperten.dk / vajhoej.dk written sometime between 2004 and now) */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "json.h"

#define JSON "[ { \"no\" : 1, \"name\" : \"Alan A\", \"role\" : \"Manager\" }, " \
               "{ \"no\" : 2, \"name\" : \"Brian B\", \"role\" : \"Engineer\" }, " \
               "{ \"no\" : 3, \"name\" : \"Chris C\", \"role\" : \"Sales rep\" } ]"

int main()
{
    json_value *employees, *employee;
    char *name, *role;
    int i, j, no;
    /* iterate over all employees */
    employees = json_parse(JSON, strlen(JSON));
    for(i = 0; i < employees->u.array.length; i++)
    {
        employee = employees->u.array.values[i];
        /* find no, name and role */
        for(j = 0; j < employee->u.object.length; j++)
        {
            if(strcmp(employee->u.object.values[j].name, "no") == 0)
            {
                no = employee->u.object.values[j].value->u.integer;
            }
            if(strcmp(employee->u.object.values[j].name, "name") == 0)
            {
                name = employee->u.object.values[j].value->u.string.ptr;
            }
            if(strcmp(employee->u.object.values[j].name, "role") == 0)
            {
                role = employee->u.object.values[j].value->u.string.ptr;
            }
        }
        /* print */
        printf("no = %d\n", no);
        printf("name = %s\n", name);
        printf("role = %s\n", role);
    }
    /* */
    json_value_free(employees);
    return 0;
}
