色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json value 嵌套

在C語(yǔ)言中使用json格式數(shù)據(jù)是非常常見(jiàn)的場(chǎng)景,而嵌套的json格式數(shù)據(jù)又是其中最為常見(jiàn)的形式之一。

在常見(jiàn)的json庫(kù)中,每個(gè)json值都可以通過(guò)一個(gè)結(jié)構(gòu)體進(jìn)行表示。而針對(duì)嵌套的json數(shù)據(jù),結(jié)構(gòu)體的嵌套也就不可避免。一個(gè)最為常見(jiàn)的嵌套結(jié)構(gòu)示例如下:

{
"name": "Tom",
"age": 20,
"address": {
"country": "China",
"province": "Jiangsu",
"city": "Suzhou"
}
}

上述json數(shù)據(jù)中,address值對(duì)應(yīng)了一個(gè)嵌套的json結(jié)構(gòu)體,而該結(jié)構(gòu)體中又包含了三個(gè)成員:country、province和city。在C語(yǔ)言中表示上述json格式可以采用以下結(jié)構(gòu)體:

typedef struct _json_obj
{
enum _json_type type; //表示json值類(lèi)型
union
{
struct _json_obj *obj; //json對(duì)象類(lèi)型,該結(jié)構(gòu)體中嵌套了_json_obj結(jié)構(gòu)體,實(shí)現(xiàn)嵌套
char *str;
int64_t i;
double f;
} v;
} json_obj;

如上述結(jié)構(gòu)體所示,_json_obj中嵌套了自身,以便存儲(chǔ)json嵌套對(duì)象的數(shù)據(jù)。因此,上述json數(shù)據(jù)可以在C語(yǔ)言中對(duì)應(yīng)以下結(jié)構(gòu)體:

json_obj obj = {
JSON_OBJ,
{
.obj = (json_obj*)malloc(sizeof(json_obj) * 3)
}
};
//針對(duì)obj->v.obj內(nèi)的三個(gè)值進(jìn)行賦值
obj->v.obj[0].type = JSON_STR;
obj->v.obj[0].v.str = strdup("China");
obj->v.obj[1].type = JSON_STR;
obj->v.obj[1].v.str = strdup("Jiangsu");
obj->v.obj[2].type = JSON_STR;
obj->v.obj[2].v.str = strdup("Suzhou");
//將obj賦值給address
json_obj *address = (json_obj*)malloc(sizeof(json_obj));
address->type = JSON_OBJ;
address->v.obj = obj->v.obj;

使用以上代碼可以實(shí)現(xiàn)對(duì)于json嵌套對(duì)象的存儲(chǔ),并且可以根據(jù)需要擴(kuò)展更深層次的嵌套。