概述
如下是一个测试的例子,最终创建的 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 = %dn", p->type);
printf("valuestring = %sn", p->valuestring);
printf("valueint = %dn", p->valueint);
printf("valuedouble = %fn", p->valuedouble);
printf("string = %sn", 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 = %sn", 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 = %sn", 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讲的全部内容,希望文章能够帮你解决json创建嵌套对象-第8讲所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复