JSON是一種輕量級的數據交換格式,常用于前后端數據交互和存儲。
C語言中常用的JSON解析庫有兩個:cJSON和JANSSON。
//使用cJSON解析json字符串示例代碼 cJSON *json = cJSON_Parse(jsonStr); // 將json字符串解析成cJSON格式的對象 if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); // 解析失敗 } else { cJSON *item = cJSON_GetObjectItem(json, "data"); // 獲取json對象中的data字段 int size = cJSON_GetArraySize(item); // 獲取data字段中數組元素個數 for (int i = 0; i< size; i++) { cJSON *subitem = cJSON_GetArrayItem(item, i); // 獲取data數組中的元素 const char *name = cJSON_GetObjectItem(subitem, "name")->valuestring; // 獲取元素中的name字段 int age = cJSON_GetObjectItem(subitem, "age")->valueint; // 獲取元素中的age字段 printf("name: %s, age: %d\n", name, age); } cJSON_Delete(json); // 釋放內存 }
//使用JANSSON解析json字符串示例代碼 json_t *json = json_loads(jsonStr, 0, NULL); // 將json字符串解析成json_t格式的對象 if (!json) { printf("Error parsing json string!\n"); // 解析失敗 } else { json_t *item = json_object_get(json, "data"); // 獲取json對象中的data字段 int size = json_array_size(item); // 獲取data字段中數組元素個數 for (int i = 0; i< size; i++) { json_t *subitem = json_array_get(item, i); // 獲取data數組中的元素 const char *name; json_unpack(subitem, "{s:s}", "name", &name); // 獲取元素中的name字段 int age; json_unpack(subitem, "{s:i}", "age", &age); // 獲取元素中的age字段 printf("name: %s, age: %d\n", name, age); } json_decref(json); // 釋放內存 }
上一篇vue 概要