c语言创建json嵌套,C语言创建Json的使用法则

参考原文:http://blog.csdn.net/xukai871105/article/details/33013455

JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

cJSON结构体:

typedefstruct cJSON {

structcJSON *next,*prev;

struct cJSON *child;

int type;

char * valuestring;

int valueint;

double valuedouble;

char *string;

}cJSON;

几点说明

1.cJOSN结构体为一个双向列表,并可通过child指针访问下一层。

2.type变量决定数据项类型(键的类型),数据项可以是字符串可以是整形,也可以是浮点型。如果是整形值的话可从valueint,如果是浮点型的话可从valuedouble取出,以此类推。

3.string可理解为节点的名称,综合此处的第2点可理解为“键”的名称。

1.重要函数说明

【1】两个创建

【创建JSON对象】cJSON *cJSON_CreateObject(void);

【创建JSON数组】cJSON *cJSON_CreateArray(void);

【2】两种添加

【向对象中添加】voidcJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);

【向数组中添加】void cJSON_AddItemToArray(cJSON *array, cJSON *item);

【3】常用几招

【向对象中增加数字】cJSON_AddItemToObject(root, "value", cJSON_CreateNumber(value));

【向对象中增加文件】cJSON_AddItemToObject(root, "string", cJSON_CreateString(string));

【4】JSON嵌套

【向对象中增加数组】cJSON_AddItemToObject(root, "rows", rows = cJSON_CreateArray());

【向数组中增加对象】cJSON_AddItemToArray(rows, row = cJSON_CreateObject());

2.创建各种各样的JSON数据包

在这里通过代码举几个例子,更多的内容请查看代码仓库中的相关文件。

【1】JSON数字

void create_single_number(void) {

cJSON *root;

char *out;

int value = 24;

root = cJSON_CreateObject(); // 创建根

cJSON_Add

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的JSON编译器的思路。 JSON编译器的主要作用是将JSON格式的字符串解析成数据结构,并输出为字符串或存储到文件中。在C语言中,可以通过使用结构体来表示JSON数据类型,并通过指针来实现链表或二叉树等数据结构。 以下是一个简单的JSON编译器的设计思路: 首先,您需要定义一个能够表示JSON数据的数据结构。这个数据结构可以使用结构体来实现,包含以下类型: - 对象:使用链表或二叉树来表示,其中每个节点包含一个键值对,键为字符串类型,值可以是任何JSON数据类型; - 数组使用链表来表示,其中每个节点包含一个元素,可以是任何JSON数据类型; - 字符串:使用字符数组或指针来表示,需要考虑转义字符的处理; - 数字:使用数值类型来表示,包括整数和浮点数; - 布尔值:使用布尔类型表示; - 空值:使用空类型表示。 接下来,您需要实现一个语法分析器,将输入的JSON字符串分解为语法单元,例如左括号、右括号、逗号、冒号、字符串、数字等。这些语法单元可以使用枚举类型或结构体来表示。 然后,您需要实现一个编译器,根据语法单元将其转换为相应的JSON数据类型。在编译过程中,需要考虑语法单元的顺序和嵌套关系,以及各种语法规则和限制。 最后,您可以将编译后的JSON数据存储在先前定义的数据结构中,并输出到文件或网络中。需要注意的是,编译器的输出格式应符合JSON规范,且需要进行大量的测试以确保编译器的正确性和稳定性。 需要注意的是,JSON编译器是一个复杂的任务。在实现时,您需要考虑各种边界条件和异常情况,例如不完整的JSON字符串、嵌套层数过多等。同时,您还需要进行大量的测试以确保编译器的正确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值