Json是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于Web開發(fā)中。C語(yǔ)言是一種廣泛應(yīng)用的編程語(yǔ)言,也可以通過庫(kù)來實(shí)現(xiàn)Json數(shù)據(jù)的解析和生成。
// Json數(shù)據(jù)格式示例 { "name": "Jack", "age": 25, "isMarried": false, "hobbies": [ "reading", "travelling", "playing games" ] } // C語(yǔ)言結(jié)構(gòu)體示例 struct Person { char name[20]; int age; bool isMarried; char hobbies[3][20]; } // Json解析示例 // 假設(shè)json字符串為str,需要解析成Person結(jié)構(gòu)體 cJSON *root = cJSON_Parse(str); char *name = cJSON_GetObjectItem(root, "name")->valuestring; int age = cJSON_GetObjectItem(root, "age")->valueint; bool isMarried = cJSON_GetObjectItem(root, "isMarried")->valueint; // 注意bool類型需要轉(zhuǎn)換 cJSON *hobbiesArray = cJSON_GetObjectItem(root, "hobbies"); for (int i = 0; i< cJSON_GetArraySize(hobbiesArray); i++) { char *hobby = cJSON_GetArrayItem(hobbiesArray, i)->valuestring; strcpy(person.hobbies[i], hobby); } // Json生成示例 // 假設(shè)要生成一個(gè)Person結(jié)構(gòu)體對(duì)應(yīng)的json字符串 cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", person.name); cJSON_AddNumberToObject(root, "age", person.age); cJSON_AddBoolToObject(root, "isMarried", person.isMarried); cJSON *hobbiesArray = cJSON_CreateArray(); for (int i = 0; i< 3; i++) { cJSON_AddStringToObject(hobbiesArray, person.hobbies[i]); } cJSON_AddItemToObject(root, "hobbies", hobbiesArray); char *jsonStr = cJSON_Print(root);
在使用C語(yǔ)言處理Json數(shù)據(jù)時(shí),需要引入第三方庫(kù),如cJSON,它提供了許多Json數(shù)據(jù)的解析和生成方法。上面給出了Json數(shù)據(jù)格式示例、C語(yǔ)言結(jié)構(gòu)體示例、Json解析示例和Json生成示例,大家可以根據(jù)自己的需要進(jìn)行使用和修改。