在C語言中,有時候我們需要將json字符串轉換成某個未知類的對象。為此,我們可以使用CJson這個庫,它提供了一些函數來實現這個轉換的過程。
#include "cjson.h"
typedef struct {
int id;
char name[20];
} Person;
int main() {
cJSON *root = cJSON_Parse("{\"id\": 123, \"name\": \"Tom\"}");
Person person;
person.id = cJSON_GetObjectItem(root, "id")->valueint;
strcpy(person.name, cJSON_GetObjectItem(root, "name")->valuestring);
cJSON_Delete(root);
return 0;
}
在上面的代碼中,我們定義了一個Person結構體,它有兩個屬性:id和name。我們使用CJson的cJSON_Parse函數將一個json字符串解析成一個JSON對象,然后通過cJSON_GetObjectItem函數獲取該JSON對象的id和name屬性的值,最后把這些值賦給Person對象的對應屬性。
需要注意的是,如果json字符串和目標結構體的屬性不完全匹配,或者屬性的值類型與目標類型不匹配,轉換就會失敗。因此,在使用CJson轉換json字符串成未知類時,需要注意輸入的json字符串是否符合預期,并且保證轉換過程中不會出現類型不匹配的情況。