本文共 1548 字,大约阅读时间需要 5 分钟。
最近在使用c语言来编写服务器。json又是比较常用的一种配置说明文件的格式。来记录一下。以资查阅。实在太简单了。
对于cJSON中的节点描述:
/* The cJSON structure: */typedef struct cJSON { struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */ struct cJSON *child; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */ int type; /* The type of the item, as above. */ char *valuestring; /* The item's string, if type==cJSON_String */ int valueint; /* The item's number, if type==cJSON_Number */ double valuedouble; /* The item's number, if type==cJSON_Number */ char *string; /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */} cJSON;
将内存解析json
/* Supply a block of JSON, and this returns a cJSON object you can interrogate. Call cJSON_Delete when finished. */extern cJSON *cJSON_Parse(const char *value);
如果需要加载的json为
{ "first_blood" : { "jax" : true }, "second_blood" : { "Vayne" : true }}
cJSON *cjson = NULL; cjson = cJSON_Parse(buf); cJSON *node = NULL; cJSON *ele = NULL; if (cjson == NULL) { printf("[IDL] load_idl_file failed, parse file failed, info: %s\n",cfg); return 1; } for ( node = cjson->child; node != NULL; node = node->next) { fun_name = node->string; ele = node->child; printf("name: %s\n",ele->string); }
这样也就受用了。
转载地址:http://idfmf.baihongyu.com/