在C語言編程中,常常需要將實體類轉換為json格式的字符串,或者將json格式的字符串轉為實體類對象,這種轉換可以通過使用第三方庫cjson來實現。
首先我們需要將cjson庫添加到我們的工程中。在使用cjson庫前,需要創建一個json對象,可以使用cJSON_CreateObject()函數來創建一個json對象,如下所示:
cJSON* json_obj = cJSON_CreateObject();
然后我們可以通過調用cJSON_AddItemToObject()函數,將實體類的屬性值加入到json對象中。函數參數中第一個參數是json對象,第二個參數是屬性的key,第三個參數是屬性的值,如下所示:
cJSON_AddItemToObject(json_obj, "name", cJSON_CreateString("Tom")); cJSON_AddItemToObject(json_obj, "id", cJSON_CreateNumber(12345));
以上代碼將一個名為“Tom”的字符串和一個id為12345的數字添加到了json對象中。
接下來我們可以將json對象轉換成字符串,使用cJSON_Print函數即可:
char* json_str = cJSON_Print(json_obj);
以上代碼將json對象轉換成字符串,并賦值給了json_str變量。
同樣地,我們也可以將json格式的字符串轉換為實體類對象。使用cJSON_Parse函數可以將json字符串轉換成json對象:
cJSON* json_obj = cJSON_Parse(json_str);
然后我們可以通過cJSON_GetObjectItem函數,獲取對象中對應屬性的值,如下所示:
cJSON* name_node = cJSON_GetObjectItem(json_obj, "name"); cJSON* id_node = cJSON_GetObjectItem(json_obj, "id"); char* name = cJSON_GetStringValue(name_node); int id = id_node->valueint;
以上代碼將json對象中的“name”屬性值轉換成了一個名為name的字符串,將“id”屬性值轉換成了一個名為id的整數。
因此,我們可以使用cjson庫實現實體類和json字符串的互相轉換。
上一篇python 類 嵌套類
下一篇c 實現json封裝