本文出自 : http://stevengw.blog.163.com/blog/static/5834475120124643458695/
http://diaorui.net/?p=245
cJSON簡介:
JSON(JavaScriptObject Notation)是一種輕量級的數據交換格式。它基於JavaScript的一個子集。JSON採用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣。這些特性使JSON成爲理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成。
cJSON是一個超輕巧,攜帶方便,單文件,簡單的可以作爲ANSI-C標準的JSON解析器。
cJSON結構體:
typedefstruct cJSON {
structcJSON *next,*prev;
struct cJSON *child;
int type;
char * valuestring;
int valueint;
double valuedouble;
char *string;
}cJSON;
1、cJSON存儲的時候是採用鏈表存儲的,其訪問方式很像一顆樹。每一個節點可以有兄妹節點,通過next/prev指針來查找,它類似雙向鏈表;每個節點也可以有孩子節點,通過child指針來訪問,進入下一層。
不過,只有節點是對象或數組纔可以有孩子節點。
2、type一共有7種取值,分別是:
#define cJSON_False 0
#define cJSON_True 1
#define cJSON_NULL 2
#define cJSON_Number 3
#define cJSON_String 4
#define cJSON_Array 5
#define cJSON_Object 6
若是Number類型,則valueint或valuedouble中存儲着值,若你期望的是int,則訪問valueint,若期望的是double,則訪問valuedouble,可以得到值。
若是String類型的,則valuestring中存儲着值,可以訪問valuestring得到值。
3、string中存放的是這個節點的名字。
用法:
1、只需在函數中includecJSON.h頭文件,然後和cJSON.c或庫文件libcJSON.a一起編譯即可使用。
2、具體函數用法詳見cJSON.h中註釋
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
http://apps.hi.baidu.com/share/detail/42828576
extern cJSON *cJSON_Parse(const char *value);//解析一個json字符串爲cJSON對象
extern char *cJSON_Print(cJSON *item);//將json對象轉換成容易讓人看清結構的字符串
extern char *cJSON_PrintUnformatted(cJSON *item);//將json對象轉換成一個很短的字符串,無回車
extern void cJSON_Delete(cJSON *c);//刪除json對象
extern int cJSON_GetArraySize(cJSON *array);//返回json數組大小
extern cJSON *cJSON_GetArrayItem(cJSON *array,int item);//返回json數組中指定位置對象
extern cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);//返回指定字符串對應的json對象
extern cJSON *cJSON_CreateIntArray(int *numbers,int count);//生成整型數組json對象
extern void cJSON_AddItemToArray(cJSON *array, cJSON *item);//向數組中添加元素