在C語言中,序列化JSON對象時默認會在對象外層加上圓括號()。這個特性可能會給我們帶來一些不便,比如如果要將序列化后的JSON數據用于前端渲染等場景,需要先將圓括號去掉,才能得到合法的JSON格式數據。
// 示例代碼 #include <stdio.h> #include <stdlib.h> #include <json-c/json.h> int main() { struct json_object *object = json_object_new_object(); json_object_object_add(object, "name", json_object_new_string("Tom")); json_object_object_add(object, "age", json_object_new_int(20)); const char *json_string = json_object_to_json_string(object); printf("With brackets: %s\n", json_string); // 去掉圓括號 char *json_string_without_brackets = strdup(json_string + 1); json_string_without_brackets[strlen(json_string_without_brackets) - 1] = '\0'; printf("Without brackets: %s\n", json_string_without_brackets); free(json_string_without_brackets); json_object_put(object); return 0; }
在這個例子中,我們定義了一個JSON對象,包含了name和age兩個字段。通過json_object_to_json_string函數將對象序列化成JSON字符串。運行結果如下:
With brackets: ({ "name": "Tom", "age": 20 }) Without brackets: { "name": "Tom", "age": 20 }
可以看到,默認情況下JSON字符串外層是帶有圓括號的。要去掉圓括號,需要手動處理一下字符串,這可能會比較麻煩。
需要注意的是,如果我們需要將JSON字符串序列化成JSON對象,不需要手動添加圓括號。可以直接使用json_tokener_parse函數解析JSON字符串,得到一個JSON對象。
// 示例代碼 ... const char *json_string = "{ \"name\": \"Tom\", \"age\": 20 }"; struct json_object *object = json_tokener_parse(json_string); ...
以上就是關于C語言序列化JSON對象后默認加上圓括號的文章,希望對您有所幫助。