C語言中,常常需要將JSON字符串轉換成相應的類進行處理,本文介紹一種實現該功能的方法。
首先,我們需要使用json-c這個開源庫來解析JSON字符串。具體步驟如下:
#include <json-c/json.h> ... char *json_string = "{ \"name\": \"Tom\", \"age\": 20 }"; json_object *json_obj = json_tokener_parse(json_string);
解析得到的json_obj即為一個包含"name"和"age"兩個字段的json_object對象,我們可以通過以下代碼獲取對應的值:
json_object *name_obj = json_object_object_get(json_obj, "name"); const char *name = json_object_get_string(name_obj); json_object *age_obj = json_object_object_get(json_obj, "age"); int age = json_object_get_int(age_obj);
接下來,我們需要定義一個對應的類來保存這些值:
typedef struct { char *name; int age; } Person;
最后,我們可以將json_object對象的值賦給Person類的相應屬性:
Person person; person.name = strdup(json_object_get_string(name_obj)); person.age = json_object_get_int(age_obj);
完整代碼示例:
#include <json-c/json.h> #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char *name; int age; } Person; int main() { char *json_string = "{ \"name\": \"Tom\", \"age\": 20 }"; json_object *json_obj = json_tokener_parse(json_string); json_object *name_obj = json_object_object_get(json_obj, "name"); json_object *age_obj = json_object_object_get(json_obj, "age"); Person person; person.name = strdup(json_object_get_string(name_obj)); person.age = json_object_get_int(age_obj); printf("name: %s\nage: %d\n", person.name, person.age); free(person.name); }