c json是一款輕量級的數據序列化和反序列化工具,它在很多場景下能夠方便地處理數據。在c json中,對應對象和集合的處理非常簡單,使用起來也很方便。
我們先來看一下如何創建一個json對象:
cJSON *root=cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "John"); cJSON_AddNumberToObject(root, "age", 25); cJSON_AddBoolToObject(root, "is_student", 1);
在上面的代碼中,我們首先創建了一個cjson的對象root,然后通過cJSON_Add*ToObject的方式添加了三個字段,分別是name、age和is_student,它們的值分別是"John"、25和true。
接著我們來看一下如何創建一個json數組:
cJSON *array=cJSON_CreateArray(); cJSON *obj1=cJSON_CreateObject(); cJSON_AddStringToObject(obj1, "name", "Lucas"); cJSON_AddNumberToObject(obj1, "age", 22); cJSON_AddBoolToObject(obj1, "is_student", 1); cJSON_AddItemToArray(array, obj1); cJSON *obj2=cJSON_CreateObject(); cJSON_AddStringToObject(obj2, "name", "Mike"); cJSON_AddNumberToObject(obj2, "age", 21); cJSON_AddBoolToObject(obj2, "is_student", 0); cJSON_AddItemToArray(array, obj2);
在上面的代碼中,我們首先創建了一個json數組array,然后通過cJSON_CreateObject的方式創建了兩個json對象obj1和obj2,然后通過cJSON_Add*ToObject的方式添加了各自的字段,最后通過cJSON_AddItemToArray將它們添加到了數組中。
在使用c json處理json數據時,列表操作也是比較常見的,下面我們來看一下如何對json數組進行遍歷操作:
cJSON *array=cJSON_Parse(json_str); if(array==NULL){ return -1; } cJSON *item=array->child; while(item!=NULL){ char *name=cJSON_GetObjectItem(item, "name")->valuestring; int age=cJSON_GetObjectItem(item, "age")->valueint; int is_student=cJSON_GetObjectItem(item, "is_student")->valueint; printf("%s %d %d\n", name, age, is_student); item=item->next; }
在上面的代碼中,我們首先通過cJSON_Parse解析了一個json字符串得到了一個json數組的對象array,然后通過array->child和item->next的方式遍歷數組中的每一個元素,通過cJSON_GetObjectItem獲取它們的值。
總的來說,c json對于對象和集合的處理非常簡單,而且非常方便,即使是對于很大的json數據,它的性能也非常不錯,是一款值得使用的json庫。