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

c 三級(jí)菜單json數(shù)據(jù)庫(kù)

在很多開發(fā)中,我們經(jīng)常需要用到菜單,而三級(jí)菜單是比較常用的菜單結(jié)構(gòu)之一。為了更好的管理和存儲(chǔ)三級(jí)菜單數(shù)據(jù),我們可以使用json格式來(lái)存儲(chǔ)三級(jí)菜單數(shù)據(jù)。

{
"menu": [
{
"id":1,
"name":"菜單1",
"children": [
{
"id": 11,
"name": "子菜單11",
"url": "/menu1/child11"
},
{
"id": 12,
"name": "子菜單12",
"url": "/menu1/child12"
}
]
},
{
"id":2,
"name":"菜單2",
"children": [
{
"id": 21,
"name": "子菜單21",
"url": "/menu2/child21"
},
{
"id": 22,
"name": "子菜單22",
"url": "/menu2/child22"
}
]
}
]
}

以上是一個(gè)簡(jiǎn)單的三級(jí)菜單json數(shù)據(jù)結(jié)構(gòu)。我們可以用c語(yǔ)言來(lái)讀取和解析json數(shù)據(jù)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cjson/cJSON.h>
#define JSON_FILE "menu.json"
int main() {
FILE *fp;
char buf[BUFSIZ];
cJSON *json;
cJSON *root;
cJSON *menu;
cJSON *submenu;
cJSON *child;
int i, j, k;
if ((fp=fopen(JSON_FILE, "rb")) == NULL) {
printf("open file error!\n");
exit(EXIT_FAILURE);
}
fread(buf, sizeof(buf), 1, fp);
fclose(fp);
json = cJSON_Parse(buf);
if (json == NULL) {
printf("parse json error!\n");
exit(EXIT_FAILURE);
}
root = cJSON_GetObjectItem(json, "menu");
for (i = 0; i< cJSON_GetArraySize(root); i++) {
menu = cJSON_GetArrayItem(root, i);
printf("menu[%d]:%s\n", i, menu->valuestring);
for (j = 0; j< cJSON_GetArraySize(menu->children); j++) {
submenu = cJSON_GetArrayItem(menu->children, j);
printf("\tsubmenu[%d].name:%s, url:%s\n", j, submenu->name, submenu->url);
for (k = 0; k< cJSON_GetArraySize(submenu->children); k++) {
child = cJSON_GetArrayItem(submenu->children, k);
printf("\t\tchild[%d].name:%s, url:%s\n", k, child->name, child->url);
}
}
}
cJSON_Delete(json);
return 0;
}

以上是一個(gè)簡(jiǎn)單的讀取json數(shù)據(jù)結(jié)構(gòu)的程序代碼。通過(guò)上述程序代碼,我們可以快速的讀取和處理三級(jí)菜單的數(shù)據(jù)信息。