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