欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json value 嵌套

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

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

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

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

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

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

json_obj obj = {
JSON_OBJ,
{
.obj = (json_obj*)malloc(sizeof(json_obj) * 3)
}
};
//針對obj->v.obj內(nèi)的三個值進行賦值
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;

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