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 ); 
 }