cjson创建数组

用cjson  创建一个 数组的方法有两种。推荐第一种,第二种不能传递二维字符串数组,因为类型char ** 指向的是一个连续内存地址。类型不匹配会导致断错误。

方法1:
    cJSON *root;
    char *result;//生成的结果
    root = cJSON_CreateObject();
    cJSON *array = cJSON_CreateArray();
    cJSON *array = cJSON_CreateArray(); // 数组元素是object  
    char names[3][30]={ "zhang1", "zhagn2", "zhagng3" };
    strcpy(names[0],"zhang4");
    strcpy(names[1],"zhang5");
     strcpy(names[2],"zhang6");
    for (int i=0;i<3;i++)
   {
      printf("names[%d]=%s\n",i,names[i]);
   }
cJSON_AddItemToArray(array, cJSON_CreateString(names[0])); // cJSON_CreateString 创建一个字符串对象。
cJSON_AddItemToArray(array, cJSON_CreateString(names[1]));
cJSON_AddItemToArray(array, cJSON_CreateString(names[2]));
cJSON_AddItemToObject(root, "names", array);
result = cJSON_Print(root);      
 printf("生成JsonArray:\n%s\n", result);
cJSON_Delete(root);  

free(result);


// 这里注意释放内存


方法二:

前面略。
char *names[20] = { "zhang1", "zhagn2", "zhagng3" };  //names 是数组指针。
cJSON * array= cJSON_CreateStringArray(names,3);
cJSON_AddItemToObject(root, "names", array);

你可能感兴趣的:(c)