在做開發過程中,我們經常會用到JSON格式的數據,而在C語言中,我們需要將JSON轉換為字典形式進行操作。下面介紹一下在C語言中如何實現JSON轉Dictionary。
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #define JSON_STRING "{'name':'小明', 'age':18, 'address':'北京市'}" typedef struct { char* key; char* val; } dict; char* trim(char* str) { char* ptr = str; while (isspace(*ptr)) ptr++; char* end = ptr + strlen(ptr) - 1; while (isspace(*end)) end--; *(end + 1) = '\0'; return ptr; } void parse_json(char* json_str, dict* d, int len) { int i = 0; char* ptr = strchr(json_str, '{'); char* end_ptr = strchr(json_str, '}'); if (!ptr || !end_ptr) return; while (ptr<= end_ptr) { char* key_start = strchr(ptr, '\''); char* key_end = strchr(key_start + 1, '\''); char* val_start = strchr(key_end + 1, ':') + 1; char* val_end = strchr(val_start, ','); if (!key_start || !key_end || !val_start || !val_end) break; *key_end = '\0'; *val_end = '\0'; d[i].key = strdup(trim(key_start + 1)); d[i].val = strdup(trim(val_start)); ptr = val_end + 1; i++; if (i >= len) break; } } int main(int argc, const char * argv[]) { dict d[3]; parse_json(JSON_STRING, d, 3); for (int i = 0; i< 3; i++) { printf("%s:%s\n", d[i].key, d[i].val); } return 0; }
如上所示,我們定義了一個dict結構體,其中包含了key和value兩個屬性。我們通過讀取JSON字符串,將字符串中的key和value解析出來存入到dict結構體中。最后,我們遍歷dict結構體中的元素,輸出每一個key-value對應的值。這樣我們就實現了C語言中JSON轉Dictionary的功能。