#include <stdio.h>
#include <jansson.h>
int main()
{
json_t *ptJsRoot = json_pack("{s:s, s:{}, s:{}, s:{}}",
"devid", "111",
"card_lights_info",
"left_smu_lights_info",
"right_smu_lights_info");
if( NULL == ptJsRoot)
{
printf("ptJsRoot pack failed!\n");
return ;
}
json_t * ptJsTmp = NULL;
//card_lights_info
json_t *ptJsCardLighsInfo=NULL;
ptJsCardLighsInfo = json_pack("{s:i, s:[]}","card_nums",3, "card_lights_detail");
if( NULL == ptJsCardLighsInfo)
{
printf("ptJsCardLighsInfo pack failed!\n");
return ;
}
ptJsTmp = json_object_get(ptJsRoot, "card_lights_info");
if( NULL == ptJsTmp)
{
printf("ptJsTmp card_lights_info not exist!\n");
return ;
}
json_object_update_missing(ptJsTmp, ptJsCardLighsInfo);
json_decref(ptJsCardLighsInfo);
ptJsTmp = json_object_get(ptJsRoot, "card_lights_info");
if( NULL == ptJsTmp )
{
printf("card_lights_info not exist!\n");
}
printf("card_nums: %d\n", json_integer_value( json_object_get(ptJsTmp, "card_nums") ));
ptJsTmp = json_object_get(ptJsTmp, "card_lights_detail");
if( NULL == ptJsTmp)
{
printf("ptJsTmp card_lights_detail not exist!\n");
return ;
}
//card_lights_detail
int i = 0;
int j = 0;
for( i= 0; i < 3; i++)
{
json_t *ptJsCardLightsDetail = json_pack("{s:s,s:i,s:[]}",
"card_guid","11111111",
"lights_num",i,
"lights_info");
if( NULL == ptJsCardLightsDetail)
{
printf("ptJsCardLightsDetail json_pack failed!\n");
return ;
}
json_t *ptJsLinghtsInfoTmp = json_object_get(ptJsCardLightsDetail, "lights_info");
if( NULL == ptJsLinghtsInfoTmp )
{
printf("lights_info is not exist!\n");
return ;
}
for( j = 0; j < i; j++)
{
json_t *ptJsLightsInfo = json_pack("{s:i,s:i}",
"lights_type",i,
"lights_color",j);
if( NULL == ptJsLightsInfo )
{
printf("ptJsCardLightsDetail json_pack failed!\n");
return;
}
json_array_append(ptJsLinghtsInfoTmp, ptJsLightsInfo);
json_decref(ptJsLightsInfo);
}
json_array_append(ptJsTmp, ptJsCardLightsDetail);
json_decref(ptJsCardLightsDetail);
}
printf("--------------------------------------\n");
for( i = 0; i< json_array_size(ptJsTmp); i++)
{
json_t * ptCardinfo = json_array_get(ptJsTmp, i);
printf("lights_num: %d\n", json_integer_value(json_object_get(ptCardinfo, "lights_num")));
printf("card_guid: %s\n", json_string_value(json_object_get(ptCardinfo, "card_guid")));
printf("----------\n");
json_t *ptJsLightsTmp = json_object_get(ptCardinfo, "lights_info");
if( NULL == ptJsLightsTmp )
{
printf("lights_info is not exist!\n");
return ;
}
for( j = 0; j < json_integer_value(json_object_get(ptCardinfo, "lights_num")); j++ )
{
json_t * ptJsLightsInfo = json_array_get(ptJsLightsTmp, j);
printf("lights_type: %d\n", json_integer_value(json_object_get(ptJsLightsInfo, "lights_type")));
printf("lights_color: %d\n", json_string_value(json_object_get(ptJsLightsInfo, "lights_color")));
printf("------------------------\n");
}
}
// json_t * ptJsTmp1 = NULL;
// ptJsTmp1 = json_object_get(ptJsRoot, "card_lights_info");
// if( NULL == ptJsTmp1 )
// {
// printf("card_lights_info not exist!\n");
// }
// printf("--------------------------------------\n");
// printf("card_nums: %d\n", json_integer_value( json_object_get(ptJsTmp1, "card_nums") ));
// ptJsTmp1 = json_object_get(ptJsTmp1, "card_lights_detail");
// if( NULL == ptJsTmp1 )
// {
// printf("card_lights_detail not exist!\n");
// }
// printf("--------------------------------------\n");
// for( i = 0; i< json_array_size(ptJsTmp1); i++)
// {
// json_t * ptCardinfo1 = json_array_get(ptJsTmp1, i);
// printf("lights_num: %d\n", json_integer_value(json_object_get(ptCardinfo1, "lights_num")));
// printf("card_guid: %s\n", json_string_value(json_object_get(ptCardinfo1, "card_guid")));
// }
}
编译:gcc -o test test.c -ljansson -Wl,-rpath=/usr/local/lib/