C語言中的json解析器可以用很多種方式來實現,其中常用的是使用字符串的處理函數。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <jansson.h>
char* json_data = "{\"name\": \"小明\", \"age\": 20, \"hobby\": \"籃球\"}";
int main() {
json_t* root;
json_error_t error;
char* name, *hobby;
int age;
root = json_loads(json_data, 0, &error);
if(!root) {
printf("解析json數據出錯: %s\n", error.text);
return 1;
}
const char* key;
json_t* value;
json_object_foreach(root, key, value) {
if(strstr(key, "name") != NULL) {
name = (char*) json_string_value(value);
printf("姓名:%s\n", name);
}
else if(strstr(key, "hobby") != NULL) {
hobby = (char*) json_string_value(value);
printf("愛好:%s\n", hobby);
}
else if(strstr(key, "age") != NULL) {
age = json_integer_value(value);
printf("年齡:%d\n", age);
}
else {
printf("json數據中存在未知屬性:%s\n", key);
}
}
json_decref(root);
return 0;
}
在上述代碼中,使用了字符串的處理函數strstr()來查找json中的屬性名。當strstr()返回一個非空指針時,說明查找到了對應的屬性名。
然后再通過json_string_value()和json_integer_value()等json庫提供的函數來獲取屬性的實際值。
需要注意的是,C語言的json解析器需要使用第三方庫,如常用的是jansson庫。本例中也使用了該庫中的函數來解析json數據。