我正在尝试创建如下的JSON对象,但我无法在其中添加第二项,例如:
"CarType": "mercedes",
"carID": "merc123"
Run Code Online (Sandbox Code Playgroud)
以及其他项目.
我想像这样创建JSON:
{
cars: [
{
"CarType": "BMW",
"carID": "bmw123"
},
{
"CarType": "mercedes",
"carID": "merc123"
},
{
"CarType": "volvo",
"carID": "vol123r"
},
{
"CarType": "ford",
"carID": "ford123"
}
]
};
Run Code Online (Sandbox Code Playgroud)
我到目前为止尝试过:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
int main (void){
char field_name[32], value[32], *out;
cJSON *root,*car;
root = cJSON_CreateObject();
car= cJSON_CreateArray();
cJSON_AddItemToObject(root, "CarType", cJSON_CreateString("BMW"));
cJSON_AddItemToObject(root, "carID", cJSON_CreateString("bmw123"));
cJSON_AddItemToArray(car, root);
out = cJSON_Print(car);
printf("%s\n",out);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的输出是这样的(缩进完全如此处所示):
[{
"CarType": "BMW",
"carID": "bmw123" …Run Code Online (Sandbox Code Playgroud) 我在程序中使用cJSON将我的值转换为JSON并将其写入文件.以下是我的代码示例:
void writeStructToFile(IOPipe this, struct structtype somevalues) {
cJSON *jout = cJSON_CreateObject();
cJSON_AddItemToObject(jout, "V1", cJSON_CreateNumber(somevalues.v1));
cJSON_AddItemToObject(jout, "V2", cJSON_CreateNumber(somevalues.v2));
fprintf(this->outstream, "%s", cJSON_Print(jout));
cJSON_Delete(jout);
}
Run Code Online (Sandbox Code Playgroud)
效果很好,但过了一段时间后我发现Linux(嵌入式)因为内存使用异常或设备(在Cortex A8上)挂起而导致程序死机.在我发现调试之后,即使我在最后删除指针,该泄漏仍然出现在此函数中.有人能看到泄漏吗?