STM32F103使用cJSON构建json不成功的解决办法

昨天用cJSON解析json数据没出问题,构建一个相似的json数据却老是返回空:
很简单的1个数据,这个样子能正常打印

cJSON* usr = NULL;
			usr = cJSON_CreateObject();
			cJSON_AddItemToObject(usr, "B", cJSON_CreateString("hello"));
			cJSON_AddItemToObject(usr, "c", cJSON_CreateString("hello"));
			//cJSON_AddItemToObject(usr, "v", cJSON_CreateString("hello"));
			//cJSON_AddItemToObject(usr, "b", cJSON_CreateString("hello"));
			char* json_data = cJSON_Print(usr);
			char* data = cJSON_PrintUnformatted(usr);
			printf("json : %s\n", json_data);//输出字符串
			printf("json : %s\n", data);//输出字符串
			cJSON_Delete(usr);//清除结构体
			free(json_data);
			free(data);   //敲重点:必须用free释放内存,不然哼哼

把上面的例子中的注释取消,构建失败,返回空…
解析比这个还长的json都没问题,难道是cJSON文件有问题,换了几个文件大小不一样的,还是一样的问题.头疼
今天无意中看到一个说法,说是STM32的用cJSON需要把堆设置大一点,反正没招了,试试.

keil中堆栈的设置文件 startup_stm32f10x_hd.s 是只读属性,改掉
Stack_Size:栈大小 栈的作用是存放函数的参数与返回值、局部变量等
Heap_Size:堆大小 堆的作用是调用C语言中malloc与free所需要的空间
STM32F103使用cJSON构建json不成功的解决办法_第1张图片
没改前是200B
我改为3KB试试,
运行正常了,3KB可能过大了,再改小点试试

你可能感兴趣的:(STM32,stm32,json,单片机)