JSON(JavaScript Object Notation) 是一種常用的輕量級數據交換格式,C語言中也有許多開源的JSON解析庫,例如cJSON。cJSON是一款基于C語言的JSON解析器和生成器,功能豐富,使用簡單。
在使用cJSON解析JSON數據時,常常會遇到JSON多列的情況。JSON多列是指JSON數據中包含多個同類型的數據,例如一組人的信息。
{ "people":[ { "name":"張三", "age":20, "gender":"男" }, { "name":"李四", "age":30, "gender":"女" }, { "name":"王五", "age":25, "gender":"男" } ] }
在解析上述JSON數據時,我們可以先使用cJSON_GetObjectItem函數獲取people數組節點,然后遍歷數組中的每一個元素,解析其中的name、age和gender等屬性。
cJSON *root,*people,*person; root = cJSON_Parse(json_string); // 解析JSON字符串 people = cJSON_GetObjectItem(root,"people"); // 獲取people數組節點 cJSON_ArrayForEach(person,people) { // 遍歷數組中的每一個元素 cJSON *name = cJSON_GetObjectItem(person,"name"); // 獲取名字屬性 cJSON *age = cJSON_GetObjectItem(person,"age"); // 獲取年齡屬性 cJSON *gender = cJSON_GetObjectItem(person,"gender"); // 獲取性別屬性 printf("姓名:%s,年齡:%d,性別:%s\n",name->valuestring,age->valueint,gender->valuestring); }
上述代碼中,我們使用了cJSON_GetObjectItem函數獲取json數據中的屬性節點,并使用cJSON_ArrayForEach函數遍歷數組中的每一個元素。
綜上所述,cJSON是一款強大的JSON解析器和生成器,可以方便地解析JSON數據,處理JSON多列數據也非常容易。