JSON (JavaScript Object Notation) 是輕量級資料交換格式,語言無關、易讀易寫。核心結構:
{ "key": value, ... }[ value, value, ... ]
{
"firstName": "John",
"lastName": "Smith",
"male": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber": [
{ "type": "home", "number": "212 555-1234" },
{ "type": "fax", "number": "646 555-4567" }
]
}
基於 GLib/GObject 的 C 語言 JSON 解析/產生庫,提供 DOM 風格 API、GObject 序列化/反序列化。
#include <stdlib.h>
#include <glib-object.h>
#include <json-glib/json-glib.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
g_print("Usage: %s \n", argv[0]);
return EXIT_FAILURE;
}
g_type_init(); // GLib 2.36 後可省略
JsonParser *parser = json_parser_new();
GError *error = NULL;
json_parser_load_from_file(parser, argv[1], &error);
if (error) {
g_print("Parse failed: %s\n", error->message);
g_error_free(error);
g_object_unref(parser);
return EXIT_FAILURE;
}
JsonNode *root = json_parser_get_root(parser);
// 此處可用 json_node_get_object()/get_array() 走訪 DOM 樹
g_object_unref(parser);
return EXIT_SUCCESS;
}
gcc test_json.c -o test_json `pkg-config --cflags --libs json-glib-1.0 gobject-2.0 glib-2.0`
g_object_ref()/g_object_unref() 管理生命週期。JSON-GLib 讓 C 程式能輕鬆處理 JSON,配合 GObject 機制可直接對應自訂結構體,適合需要跨語言資料交換的系統級開發。