首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C 指標原理(85):JSON 格式介紹與 JSON-GLib 解析實戰

     編輯:關於C

JSON 簡介

JSON (JavaScript Object Notation) 是輕量級資料交換格式,語言無關、易讀易寫。核心結構:

  • 物件:{ "key": value, ... }
  • 陣列:[ value, value, ... ]
  • 值類型:字串、數值、布林、null、物件、陣列

範例:人員資料


{
  "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" }
  ]
}

應用領域

  • Web API 資料傳輸 (RESTful、AJAX)
  • NoSQL 文件型資料庫 (MongoDB, CouchDB, RavenDB)
  • 設定檔、日誌、訊息佇列

JSON-GLib 簡介

基於 GLib/GObject 的 C 語言 JSON 解析/產生庫,提供 DOM 風格 API、GObject 序列化/反序列化。

解析 JSON 檔案完整範例


#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`

GLib/GObject 基礎知識點

  • GLib:GTK+/GNOME 基礎庫,提供動態陣列、雜湊表、字串、執行緒、主迴圈等。
  • GObject:C 語言物件系統,支援繼承、介面、訊號、屬性、反射。
  • 參考計數:g_object_ref()/g_object_unref() 管理生命週期。

總結

JSON-GLib 讓 C 程式能輕鬆處理 JSON,配合 GObject 機制可直接對應自訂結構體,適合需要跨語言資料交換的系統級開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved