C语言操作Json

cJson是开源项目,代码位置https://github.com/DaveGamble/cJSON

下载后将cJSON.c和cJSON.h加入自己的工程中,cJson.h中提供了C语言操作Json的api

Json常用数据结构:

1.object:键值对

2.Array:数组

3.String:字符串

4.Number:数字

一个例子:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"

void main()
{
    cJSON * json = cJSON_CreateObject();
    cJSON * tmp1 = NULL;
    cJSON * tmp2 = NULL;
    cJSON * tmp3 = NULL;
    cJSON * tmp4 = NULL;

    cJSON_AddItemToObject(json, "class", tmp1 = cJSON_CreateObject());

    cJSON_AddStringToObject(tmp1, "name", "option222");
    cJSON_AddStringToObject(tmp1, "attribute", "add");
    cJSON_AddStringToObject(tmp1, "match if", "option a = aa");
    cJSON_AddStringToObject(tmp1, "match if", "option be = 1");
    
    char *buf = cJSON_Print(json);
    printf("%s\n", buf);
}

编译命令:

[root@1dot1dot1dot1 json]# gcc class.c cJSON.c

执行效果:

[root@1dot1dot1dot1 json]# ./a.out 
{
    "class":    {
        "name":    "option222",
        "attribute":    "add",
        "match if":    "option cm-class = aa",
        "match if":    "option dhcp-message-type = 1"
    }
}
除了直接打印之外, 可以生成Json格式文件,代码如下:

void func()
{
    char * char_json = "{\"Merge\":\"hard\"}";
    cJSON * json = cJSON_Parse(char_json);
    char *buf = NULL;

    printf("data:%s\n", buf = cJSON_Print(json));
    FILE * fp = fopen("func.json", "w");
    fwrite(buf, strlen(buf), 1, fp);

    fclose(fp);
    free(buf);
    cJSON_Delete(json);
}

编译链接执行后,在本目录下生成func.json文件

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cjson_addstringtoobject是一个C语言函数,用于向JSON对象中添加一个字符串类型的键值对。它的参数包括一个指向JSON对象的指针、一个字符串类型的键和一个字符串类型的值。该函数会将键值对添加到JSON对象中,并返回一个指向添加的键值对的指针。 ### 回答2: cjson_addstringtoobject是一个CJSON库中的函数,用于向CJSON对象中添加一个字符串类型的值。CJSON是一种轻量级的JSON解析器和生成器,能够将JSON数据转换为C语言中的对象,并且能够将C语言中的对象转换为JSON格式。 在CJSON库中,cjson_addstringtoobject函数用于向一个CJSON对象中添加一个字符串类型的值。该函数的原型如下: ``` cJSON_bool cjson_addstringtoobject(cJSON *object, const char *string, const char *name); ``` 函数的参数中,object是要添加字符串值的对象;string是要添加的字符串;name是该字符串所对应的键名。 函数的返回值为一个布尔值,用于表示操作的成功与否。如果函数成功添加了字符串值,则返回CJSON_True,否则返回CJSON_False。 使用cjson_addstringtoobject函数可以将一个字符串类型的值添加到CJSON对象中。例如: ``` #include <stdio.h> #include "cJSON.h" int main() { cJSON *root = cJSON_CreateObject(); cjson_addstringtoobject(root, "hello, world!", "message"); char *jsonstr = cJSON_Print(root); printf("%s\n", jsonstr); cJSON_Delete(root); free(jsonstr); return 0; } ``` 上述程序使用了cjson_addstringtoobject函数向一个CJSON对象中添加了一个字符串值,并将该对象转换为了JSON字符串。输出结果为: ``` {"message":"hello, world!"} ``` 从输出结果中可以看到,我们成功地往CJSON对象中添加了一个字符串类型的值。这在实际项目中非常有用,因为JSON格式常常会用于数据传输和存储。 ### 回答3: cJSON是一个轻量级的JSON解析器和生成器,常用于处理JSON格式的数据。而cjson_addstringtoobject是cJSON中的一个函数,作用是向cJSON对象中添加一个字符串类型的属性。 具体来说,该函数有两个参数:第一个参数是cJSON对象,第二个参数是属性名和属性值的字符串形式,例如:"name":"Tom"。该函数会根据第二个参数解析出属性名和属性值并加入到cJSON对象中。 这个函数可以用于读取和生成JSON数据。在读取JSON数据时,我们需要将JSON字符串解析成cJSON对象,然后使用cjson_addstringtoobject函数将属性逐一加入到对象中。在生成JSON数据时,我们需要创建一个cJSON对象,并使用cjson_addstringtoobject函数将属性加入到对象中,最后将cJSON对象转换为JSON字符串输出即可。 需要注意的是,在使用cjson_addstringtoobject函数时,我们需要确保cJSON对象中不存在该属性,否则会覆盖原有的值。另外,该函数只支持字符串类型的属性值,如果需要添加其他类型的属性需要使用其它函数。 总之,cjson_addstringtoobject函数是cJSON中的一个实用函数,可以方便地向JSON对象中添加字符串类型的属性,帮助我们处理JSON数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值