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; }
以上兩種解析方式各有優缺點,可以根據具體需求選擇使用。
上一篇vue java 跨域
下一篇vue ios無法滑動