This exmple method will generate the result string below:
{ "command":"link_status",
"result":["AAABBBCCC"] }
char*
generate_json_data() {
char *ret_strings = NULL;
char *ret_string = "AAABBBCCC";
json_t *root = json_object();
json_t *result_json_arr = json_array();
json_object_set_new( root, "command", json_string( "link_status" ) );
json_object_set_new( root, "result", result_json_arr );
...
json_array_append( result_json_arr, json_string( ret_string ) );
free( ret_string );
ret_strings = json_dumps( root, 0 );
json_decref( root );
return ret_strings;
}
For more example in details:
#include <stdio.h>
#include <jansson.h>
void add_2array_to_json( json_t* obj, const char* name, const int*
marr, size_t dim1, size_t dim2 )
{
size_t i, j;
json_t* jarr1 = json_array();
for( i=0; i<dim1; ++i ) {
json_t* jarr2 = json_array();
for( j=0; j<dim2; ++j ) {
int val = marr[ i*dim2 + j ];
json_t* jval = json_integer( val );
json_array_append_new( jarr2, jval );
}
json_array_append_new( jarr1, jarr2 );
}
json_object_set_new( obj, name, jarr1 );
return;
}
int main()
{
json_t* jdata;
char* s;
int arr1[2][3] = { {1,2,3}, {4,5,6} };
int arr2[4][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} };
jdata = json_object();
add_2array_to_json( jdata, "arr1", &arr1[0][0], 2, 3 );
add_2array_to_json( jdata, "arr2", &arr2[0][0], 4, 4 );
s = json_dumps( jdata, 0 );
puts( s );
free( s );
json_decref( jdata );
return 0;
}
When run it outputs:
{"arr1": [[1, 2, 3], [4, 5, 6]], "arr2": [[1, 2, 3, 4], [5, 6, 7, 8],
[9, 10, 11, 12], [13, 14, 15, 16]]}
Another example:
#include "jansson.h"
...
json_error_t error;
json_t *root = json_loads( reply->data.buffer, 0, &error );
if( root )
{
json_t *jsonData = json_object_get( root, "data" );
if( json_is_array( jsonData ) )
{
const uint length = json_array_size( jsonData );
for( uint i=0; i<length; ++i ) // Iterates over the sequence elements.
{
json_t *jsonObject = json_array_get( jsonData, i );
json_t *jsonID = json_object_get( jsonObject, "id" );
const char *jsonStringID = json_string_value( jsonID );
json_t *jsonName = json_object_get( jsonObject, "name" );
const char *jsonStringName = json_string_value( jsonName );
// We can now do something with our Name and ID
}
}
json_decref( root );
}