C語言中使用JSON格式是一種常見的跨語言通信方式,JSON數(shù)據(jù)結構支持多層嵌套。可以將一個JSON字符串解析為多層嵌套的數(shù)據(jù)結構,方便對數(shù)據(jù)進行存取和處理。在解析JSON數(shù)據(jù)時,可以使用第三方開源庫cJSON。
#include "cJSON.h" int main() { //創(chuàng)建一個JSON對象,并添加多層嵌套的數(shù)據(jù) cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "Amy"); cJSON *contact = cJSON_CreateObject(); cJSON_AddStringToObject(contact, "phone", "123456"); cJSON_AddStringToObject(contact, "email", "example@demo.com"); cJSON_AddItemToObject(root, "contact", contact); //將JSON對象轉換為字符串輸出 char *json_str = cJSON_Print(root); printf("%s\n", json_str); //解析JSON字符串,獲取嵌套的數(shù)據(jù) cJSON *json = cJSON_Parse(json_str); cJSON *name = cJSON_GetObjectItem(json, "name"); cJSON *contact = cJSON_GetObjectItem(json, "contact"); cJSON *phone = cJSON_GetObjectItem(contact, "phone"); cJSON *email = cJSON_GetObjectItem(contact, "email"); printf("name: %s\n", name->valuestring); printf("phone: %s\n", phone->valuestring); printf("email: %s\n", email->valuestring); //釋放內(nèi)存 cJSON_Delete(root); cJSON_Delete(json); free(json_str); return 0; }
在上面的示例代碼中,我們創(chuàng)建了一個JSON對象,并添加了多層嵌套的數(shù)據(jù)。然后使用cJSON庫中的函數(shù)將JSON對象轉換為字符串輸出,再解析JSON字符串,獲取嵌套的數(shù)據(jù)。
cJSON庫提供了豐富的API,可以方便地對JSON數(shù)據(jù)進行解析、生成、查找和修改等操作。使用cJSON庫可以輕松地與其他編程語言進行數(shù)據(jù)交換,是一種非常方便的通信方式。