在很多開發中,我們經常需要用到菜單,而三級菜單是比較常用的菜單結構之一。為了更好的管理和存儲三級菜單數據,我們可以使用json格式來存儲三級菜單數據。
{ "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" } ] } ] }
以上是一個簡單的三級菜單json數據結構。我們可以用c語言來讀取和解析json數據。
#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; }
以上是一個簡單的讀取json數據結構的程序代碼。通過上述程序代碼,我們可以快速的讀取和處理三級菜單的數據信息。
上一篇python 自帶裝飾器
下一篇vue和datav聯合