在使用C語言開發過程中,json 結構體是很常見的一種數據結構。Json 結構體常常被用于在不同程序之間傳遞數據,或者將數據存儲到文件中。
typedef struct JSON_OBJECT { int type; /* 元素類型 */ char* key; /* key值 */ union { char* s_val; /* 字符串類型的值 */ double n_val; /* 數值類型的值 */ int b_val; /* 布爾類型的值 */ struct JSON_OBJECT* o_val; /* 對象類型的值 */ struct JSON_ARRAY* a_val; /* 數組類型的值 */ } value; /* 具體的元素值,不同類型值的以 union 的形式存儲 */ struct JSON_OBJECT* next; /* 兄弟元素 */ } JSON_OBJECT;
JSON_OBJECT 結構體是一個嵌套結構體,其中包含了元素類型、key值以及不同類型的具體值,這樣就可以存儲各種不同的數據類型。JSON_OBJECT還包含了一個指向兄弟元素的指針,這樣就可以方便地組織成一個對象。
使用 JSON_OBJECT 結構體來存儲 json 數據,可以使用遞歸的方式訪問和操作,比較方便,并且代碼比較簡潔。下面是一個示例代碼,使用 JSON_OBJECT 結構體創建了一個 json 對象,并將其輸出到控制臺:
int main() { JSON_OBJECT* jsonObj = create_json_object(); set_integer_value(jsonObj, "key1", 1); set_string_value(jsonObj, "key2", "string_value"); set_boolean_value(jsonObj, "key3", true); set_object_value(jsonObj, "key4", create_json_object()); set_array_value(jsonObj, "key5", create_json_array()); printf("json object: %s\n", json_to_string(jsonObj)); return 0; }
以上代碼使用了 create_json_object 函數來創建一個 json 對象,并分別使用 set_integer_value、set_string_value、set_boolean_value、set_object_value、set_array_value 函數向該對象中添加了不同類型的值。最后使用 json_to_string 函數將 json 對象打印出來。