在C語言中,我們可以使用字符串來表示數據。而在網絡傳輸或存儲數據時,我們常常需要使用JSON格式。因此,將C字符串轉換為JSON格式是很有必要的。
我們可以使用以下代碼來將C字符串轉為JSON格式:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main(void) { char* str = "{\"name\":\"John\", \"age\": 30}"; json_t* json = json_loads(str, JSON_DECODE_ANY, NULL); if (json) { printf("%s\n", json_dumps(json, JSON_COMPACT)); json_decref(json); } else { printf("error!\n"); } return 0; }
這段代碼使用了json-c庫,需要在編譯時鏈接。在運行時,我們先將C字符串解析成json對象,然后再將json對象轉化為C字符串輸出。
值得注意的是,如果C字符串中包含了轉義字符,那么我們需要使用json_loadb函數,在解析時需要指定字符串長度。例如:
char* str = "{\"name\":\"John\\\"Doe\\\"\", \"age\": 30}"; json_t* json = json_loadb(str, strlen(str), JSON_DECODE_ANY, NULL);
在轉換后,輸出的字符串中已經去掉了轉義字符,變成了以下形式:
{"name":"John\"Doe\"", "age":30}
除此之外,我們還可以根據需要,使用不同的json_dumps標志位,來獲得不同的輸出格式。例如,使用JSON_SORT_KEYS標志可以按照key值的字典序排序。
char* str = "{\"name\":\"John\", \"age\": 30,\"work\":\"Engineer\"}"; json_t* json = json_loads(str, JSON_DECODE_ANY, NULL); if (json) { printf("%s\n", json_dumps(json, JSON_SORT_KEYS|JSON_COMPACT)); json_decref(json); } else { printf("error!\n"); }
輸出的結果將會按照key值的字典序排序:
{"age":30,"name":"John","work":"Engineer"}
總而言之,將C字符串轉化為JSON格式是比較簡單的,我們只需要使用json-c庫提供的函數即可實現。解析后的JSON對象,可以方便的使用其他JSON解析工具進行進一步處理。
上一篇html怎么設置雙下劃線
下一篇python+go+區別