在開發中,有時候需要將Json數據轉為C語言中能夠使用的數據結構,或者需要將C語言中的數據轉為Json數據格式。這時候就需要使用C Json轉碼庫。
首先,需要下載C Json轉碼庫。目前比較流行的C JSON庫有cJSON,json-c,Jansson等。
// 使用cJSON庫的示例代碼如下 #include <stdio.h> #include <cJSON.h> int main() { // 將Json字符串轉為cJSON結構體 const char *str1 = "{\"name\":\"Tom\",\"age\":18}"; cJSON *json1 = cJSON_Parse(str1); if(json1 == NULL) { printf("json1 parse error\n"); return 0; } // 從cJSON結構體中獲取數據 cJSON *name1 = cJSON_GetObjectItem(json1, "name"); cJSON *age1 = cJSON_GetObjectItem(json1, "age"); printf("name: %s, age: %d\n", name1->valuestring, age1->valueint); // 將cJSON結構體轉為Json字符串 char *str2 = cJSON_Print(json1); printf("json str1: %s\n", str2); cJSON_Delete(json1); return 0; }
以上代碼首先將Json字符串轉換為cJSON結構體,然后通過cJSON_GetObjectItem函數獲取到相應key的value,最后將cJSON結構體轉為Json字符串。
接下來,我們看看如何使用json-c庫進行轉碼。
// 使用json-c庫的示例代碼如下 #include <stdio.h> #include <json-c/json.h> int main() { // 將Json字符串轉為json_object結構體 const char *str1 = "{\"name\":\"Tom\",\"age\":18}"; json_object *json1 = json_tokener_parse(str1); if(json1 == NULL) { printf("json1 parse error\n"); return 0; } // 從json_object結構體中獲取數據 json_object *name1 = json_object_object_get(json1, "name"); json_object *age1 = json_object_object_get(json1, "age"); printf("name: %s, age: %d\n", json_object_get_string(name1), json_object_get_int(age1)); // 將json_object結構體轉為Json字符串 char *str2 = json_object_to_json_string(json1); printf("json str1: %s\n", str2); json_object_put(json1); return 0; }
以上代碼同樣是先將Json字符串轉換為json_object結構體,然后通過json_object_object_get函數獲取到相應key的value,最后將json_object結構體轉為Json字符串。
兩種轉碼方式都很容易上手,根據實際需要進行選擇。