C語言中操作JSON格式的數據通常需要序列化和反序列化的過程。
首先,進行序列化操作需要將C語言中的數據結構轉化為JSON字符串,常用的庫有cJSON和jansson。
#include "cJSON.h" ... cJSON* root = cJSON_CreateObject(); cJSON* item = cJSON_CreateString("hello world"); cJSON_AddItemToObject(root, "message", item); char* str = cJSON_Print(root); printf("%s", str);
上面的代碼使用cJSON庫創建了一個簡單的JSON對象,包含一個字符串類型的屬性,然后通過cJSON_Print函數將其轉換為JSON格式的字符串。
然而,需要注意的是,在JSON字符串中可能會包含一些需要進行轉義的特殊字符,如雙引號、反斜杠等。如果不進行轉義,就有可能導致JSON數據無法正確解析。
下面是一個簡單的字符串轉義函數。
char* json_escape_str(const char* src) { const char *tag = "\"\\/\b\f\n\r\t"; const char *rep = "\"\\\\\\/bfnrt"; char *dest = (char *)malloc(strlen(src) * 2 + 1); char *p = dest; while (*src != '\0') { char *q = strchr(tag, *src++); if (q != NULL) { *p++ = '\\'; *p++ = rep[q - tag]; } else { *p++ = src[-1]; } } *p = '\0'; return dest; }
該函數可以將傳入的字符串中需要進行轉義的特殊字符進行轉義,并返回轉義后的新字符串。
使用該函數可以在序列化JSON數據時保證數據正常解析。
上一篇c 接口返回json