色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json轉dictionary

錢斌斌2年前8瀏覽0評論

在做開發過程中,我們經常會用到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的功能。