在使用c語言處理json字符串數組時,我們需要使用第三方庫進行解析。這里我們選擇常用的cJSON庫。首先我們需要將json字符串轉換為cJSON對象,然后通過遍歷對象的方式進行賦值。
// 示例json字符串數組 char *json_str = "[{\"name\":\"Tom\",\"age\":18}, {\"name\":\"Jerry\",\"age\":20}]"; // 將json字符串轉換為cJSON對象 cJSON *root = cJSON_Parse(json_str); // 遍歷cJSON對象 if (root != NULL) { int size = cJSON_GetArraySize(root); for (int i = 0; i< size; i++) { cJSON *item = cJSON_GetArrayItem(root, i); if (item != NULL) { // 解析name、age字段 cJSON *name = cJSON_GetObjectItem(item, "name"); cJSON *age = cJSON_GetObjectItem(item, "age"); if (name != NULL && age != NULL) { // 將字段值賦給結構體 struct student s; strcpy(s.name, name->valuestring); s.age = age->valueint; printf("name: %s, age: %d\n", s.name, s.age); } } } } // 釋放cJSON對象內存 cJSON_Delete(root);
在上述代碼中,我們通過cJSON_Parse函數將json字符串轉換為cJSON對象。然后遍歷對象,通過cJSON_GetArraySize和cJSON_GetArrayItem函數獲取json數組的大小和元素,再通過cJSON_GetObjectItem函數獲取子對象的字段值。最后將字段值賦給結構體即可完成賦值。