相关疑难解决方法(0)

使用cJSON.h创建json对象

我正在尝试创建如下的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)

c json cjson

3
推荐指数
1
解决办法
7128
查看次数

cJSON内存泄漏

我在程序中使用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上)挂起而导致程序死机.在我发现调试之后,即使我在最后删除指针,该泄漏仍然出现在此函数中.有人能看到泄漏吗?

c json pointers memory-leaks cjson

2
推荐指数
1
解决办法
2857
查看次数

标签 统计

c ×2

cjson ×2

json ×2

memory-leaks ×1

pointers ×1