C語言在處理JSON字符串的時候,我們可以使用一些C庫來實現把JSON字符串轉換成C對象數組。下面我們將介紹幾種常用的JSON解析庫,以及如何使用這些庫來處理JSON字符串。
JSON解析庫
1. cJSON: cJSON是非常流行的C語言JSON解析庫,它可以把JSON字符串解析成C對象。
#include "cJSON.h"
int main() {
char *json_str = "{\"name\": \"Tom\", \"age\": 23, \"isMarried\": false}";
cJSON *root = cJSON_Parse(json_str);
if (root != NULL) {
cJSON *name = cJSON_GetObjectItem(root, "name");
cJSON *age = cJSON_GetObjectItem(root, "age");
cJSON *isMarried = cJSON_GetObjectItem(root, "isMarried");
printf("name: %s, age: %d, isMarried: %s", name->valuestring, age->valueint, isMarried->type == cJSON_True ? "true" : "false");
cJSON_Delete(root);
return 0;
return -1;
}
2. Jansson: Jansson也是一個非常流行的JSON解析庫,它支持從字符串、文件和內存中解析JSON,同時也支持把JSON寫入文件。
#include "jansson.h"
int main() {
char *json_str = "{\"name\": \"Tom\", \"age\": 23, \"isMarried\": false}";
json_t *root;
json_error_t error;
root = json_loads(json_str, 0, &error);
if (root != NULL) {
json_t *name = json_object_get(root, "name");
json_t *age = json_object_get(root, "age");
json_t *isMarried = json_object_get(root, "isMarried");
printf("name: %s, age: %d, isMarried: %s", json_string_value(name), json_integer_value(age), json_is_true(isMarried) ? "true" : "false");
json_decref(root);
return 0;
return -1;
}
CJSON VS Jansson
CJSON和Jansson都是非常流行的C語言JSON解析庫,二者都有各自的優勢。
1. cjson:解析速度更快,占用更少的內存。
2. Jansson:使用更加簡單易懂,一個簡單的API就可以完成JSON的解析和生成。
以上介紹了C語言中把JSON字符串轉換成對象數組的方法,希望能夠幫助到大家。
上一篇c#如何引用json文件
下一篇c#實體與json轉換