在C語言中,將數據轉換成JSON字符串是非常常見的操作。然而,有時候我們會發現轉換出來的JSON字符串格式不正確,導致無法解析或者解析出來的數據不完整。下面我們就來看看這是為什么。
// 代碼示例: #include#include #include int main() { // 創建JSON對象 struct json_object *jobj = json_object_new_object(); // 添加JSON字段 json_object_object_add(jobj, "name", json_object_new_string("Jack")); json_object_object_add(jobj, "age", json_object_new_int(20)); json_object_object_add(jobj, "gender", json_object_new_string("male")); // 轉換成JSON字符串 const char *json_str = json_object_to_json_string(jobj); printf("%s\n", json_str); return 0; }
以上代碼創建了一個JSON對象,并添加了三個字段:name、age和gender。然后調用json_object_to_json_string函數將JSON對象轉換成JSON字符串,并打印出來。
但是,當我們運行代碼后,發現轉換出來的JSON字符串格式不正確:
{"name":"Jack","age":20,"gender":"male"}
正確的JSON格式應該是:
{ "name": "Jack", "age": 20, "gender": "male" }
原因在于,json-c庫默認將JSON字符串中的空格、換行符等空白字符去除,導致格式不正確。解決方法很簡單,只需要在轉換成JSON字符串時添加一個選項即可:
const char *json_str = json_object_to_json_string_ext(jobj, JSON_C_TO_STRING_PRETTY);
添加JSON_C_TO_STRING_PRETTY選項后,JSON字符串就會按照正確的格式生成。
因此,在使用json-c庫時,需要注意在轉換成JSON字符串時是否需要保留格式。