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

c語言 json解析庫

劉姿婷1年前9瀏覽0評論

C語言中的JSON解析庫可以幫助我們更方便地處理JSON格式的數據。下面介紹一下常用的C語言JSON解析庫。

1. cJSON

#include <stdio.h>
#include <cjson/cJSON.h>
int main()
{
char *str = "{\"name\":\"Tom\",\"age\":20}";
cJSON *json = cJSON_Parse(str);
cJSON *nameItem = cJSON_GetObjectItem(json, "name");
cJSON *ageItem = cJSON_GetObjectItem(json, "age");
printf("name:%s, age:%d\n", nameItem->valuestring, ageItem->valueint);
cJSON_Delete(json);
return 0;
}

2. jsmn

#include <stdio.h>
#include <string.h>
#include <jsmn/jsmn.h>
int main()
{
char *str = "{\"name\":\"Tom\",\"age\":20}";
int r;
jsmn_parser p;
jsmntok_t t[128];
jsmn_init(&p);
r = jsmn_parse(&p, str, strlen(str), t, sizeof(t)/sizeof(t[0]));
if (r< 0) {
printf("Failed to parse JSON: %d\n", r);
return 1;
}
if (r< 1 || t[0].type != JSMN_OBJECT) {
printf("Object expected\n");
return 1;
}
int i;
for (i = 1; i< r; i++) {
if (jsoneq(str, &t[i], "name") == 0) {
printf("name:%.*s\n", t[i+1].end-t[i+1].start, str+t[i+1].start);
i++;
} else if (jsoneq(str, &t[i], "age") == 0) {
printf("age:%.*s\n", t[i+1].end-t[i+1].start, str+t[i+1].start);
i++;
}
}
return 0;
}

以上兩種解析方式各有優缺點,可以根據具體需求選擇使用。