json创建嵌套对象-第8讲
Posted Linux编程学堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json创建嵌套对象-第8讲相关的知识,希望对你有一定的参考价值。
如下是一个测试的例子,最终创建的 JSON 对象如下:
p =
"num": 12,
"my_array": [
"name": "www",
"age": 120
,
"name": "wkf",
"age": 121
,
"name": "abc",
"age": 122
]
其中,可以看到,这个 JSON 是嵌套了对象和数组,我们可以分析如下:
1 整体上是一个 JSON 对象,我们可以命名为根对象 root;
2 在 root 对象下,有一个 JSON 对象,就是 "num":12;
3 在 root 对象下,有一个 JSON 数组,它的名称是 my_array;
4 在 my_array 数组中,有 3 个 JSON 元素对象;每个元素JSON对象有 2 个属性;
5 所以,分析了该 JSON 的构成之后,就可以在代码中使用相应的 API 来构建它。
//========================================================================
测试的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void json_create(void);
void json_create1(void);
//========================================================
//========================================================
void print_json(cJSON *p)
printf("============================\\n");
printf("type = %d\\n", p->type);
printf("valuestring = %s\\n", p->valuestring);
printf("valueint = %d\\n", p->valueint);
printf("valuedouble = %f\\n", p->valuedouble);
printf("string = %s\\n", p->string);
printf("============================\\n");
//========================================================
//========================================================
int main (int argc, const char * argv[])
json_create();
//========================================================
//========================================================
void json_create(void)
char *p;
int i;
cJSON *root = cJSON_CreateObject();
cJSON_AddNumberToObject(root, "num", 12);
cJSON *array = cJSON_CreateArray();
cJSON_AddItemToObject(root, "my_array", array);
p = cJSON_Print(root);
printf("p = %s\\n", p);
free(p);
//==============================================
char* name[] = "www", "wkf", "abc";
int age[] = 120, 121, 122;
for(i = 0; i < 3; i++)
cJSON *obj = cJSON_CreateObject();
cJSON_AddItemToArray(array, obj);
cJSON_AddItemToObject(obj, "name", cJSON_CreateString(name[i]));
cJSON_AddItemToObject(obj, "age", cJSON_CreateNumber(age[i]));
p = cJSON_Print(root);
printf("p = %s\\n", p);
free(p);
//注意:只需要销毁根节点,那么,挂载在根节点上的元素,也一起被销毁;
cJSON_Delete(root);
运行的结果如下:
[hill@Ubunut10 test1]$./test
p =
"num": 12,
"my_array": []
p =
"num": 12,
"my_array": [
"name": "www",
"age": 120
,
"name": "wkf",
"age": 121
,
"name": "abc",
"age": 122
]
[hill@Ubunut10 test1]$
韦凯峰 Linux C/C++零基础编程教程
Linux系统编程,Openwrt系统开发
以上是关于json创建嵌套对象-第8讲的主要内容,如果未能解决你的问题,请参考以下文章