帮酷LOGO
  • 显示原文与译文双语对照的内容
從零開始的 JSON 庫教程

  • 源代碼名稱:json-tutorial
  • 源代碼網址:http://www.github.com/miloyip/json-tutorial
  • json-tutorial源代碼文檔
  • json-tutorial源代碼下載
  • Git URL:
    git://www.github.com/miloyip/json-tutorial.git
  • Git Clone代碼到本地:
    git clone http://www.github.com/miloyip/json-tutorial
  • Subversion代碼到本地:
    $ svn co --depth empty http://www.github.com/miloyip/json-tutorial
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 從零開始的 JSON 庫教程
    • Milo Yip
    • 2016/9/15

    也許有很多同學上過 C/C++ 的課後,可以完成一些簡單的編程練習,又能在一些網站刷題,但對於如何開發有實際用途的程序可能感到束手無策。本教程希望能以一個簡單的項目開發形式,讓同學能逐步理解如何從無到有去開發軟體。

    為什麼選擇 JSON?因為它足夠簡單,除基本編程外不需大量技術背景知識。JSON 有標準,可按照標準逐步實現。JSON 也是實際在許多應用上會使用的格式,所以才會有大量的開源庫。

    這是一個免費、開源的教程,如果你喜歡,也可以打賞鼓勵。因為工作及家庭因素,不能保證每篇文章的首發時間,請各為見諒。

    對象與目標

    教程對象:學習過基本 C/C++ 編程的同學。

    通過這個教程,同學可以了解如何從零開始寫一個 JSON 庫,其特性如下:

    • 符合標準的 JSON 解析器和生成器
    • 手寫的遞歸下降解析器(recursive descent parser)
    • 使用標準 C 語言(C89)
    • 跨平台/編譯器(如 Windows/Linux/OS X,vc/gcc/clang)
    • 僅支持 UTF-8 JSON 文本
    • 僅支持以 double 存儲 JSON number 類型
    • 解析器和生成器的代碼合共少於 500 行

    除了圍繞 JSON 作為例子,希望能在教程中講述一些課題:

    • 測試驅動開發(test driven development, TDD)
    • C 語言編程風格
    • 數據結構
    • API 設計
    • 斷言
    • Unicode
    • 浮點數
    • Github、CMake、valgrind、Doxygen 等工具

    教程大綱

    本教程預計分為 9 個單元,第 1-8 個單元附帶練習和解答。

    • 啟程(2016/9/15 完成):編譯環境、JSON 簡介、測試驅動、解析器主要函數及各數據結構。練習 JSON 布爾類型的解析。啟程解答篇(2016/9/17 完成)。
    • 解析數字(2016/9/18 完成):JSON number 的語法。練習 JSON number 類型的校驗。解析數字解答篇(2016/9/20 完成)。
    • 解析字元串(2016/9/22 完成):使用 union 存儲 variant、自動擴展的堆棧、JSON string 的語法、valgrind。練習最基本的 JSON string 類型的解析、內存釋放。解析字元串解答篇(2016/9/27 完成)。
    • Unicode(2016/10/2 完成):Unicode 和 UTF-8 的基本知識、JSON string 的 unicode 處理。練習完成 JSON string 類型的解析。Unicode 解答篇(2016/10/6 完成)。
    • 解析數組(2016/10/7 完成):JSON array 的語法。練習完成 JSON array 類型的解析、相關內存釋放。解析數組解答篇(2016/10/13 完成)。
    • 解析對象(2016/10/29 完成):JSON object 的語法、重構 string 解析函數。練習完成 JSON object 的解析、相關內存釋放。解析對象解答篇(2016/11/15 完成)。
    • 生成器(2016/12/20 完成):JSON 生成過程、注意事項。練習完成 JSON 生成器。生成器解答篇(2017/1/5 完成)
    • 訪問:JSON array/object 的訪問及修改。練習完成相關功能。
    • 終點及新開始:加入 nativejson-benchmark 測試,與 RapidJSON 對比及展望。

    關於作者

    葉勁峰(Milo Yip)現任騰訊 T4 專家、互動娛樂事業群魔方工作室群前台技術總監。他獲得香港大學認知科學學士(BCogSc)、香港中文大學系統工程及工程管理哲學碩士(MPhil)。他是《遊戲引擎架構》譯者、《C++ Primer 中文版(第五版)》審校。他曾參與《天涯明月刀》、《斗戰神》、《愛麗絲:瘋狂回歸》、《美食從天降》、《王子傳奇》等遊戲項目,以及多個遊戲引擎及中間件的研發。他是開源項目 RapidJSON 的作者,開發 nativejson-benchmark 比較 41 個開源原生 JSON 庫的標準符合程度及性能。他在 1990 年學習 C 語言,1995 年開始使用 C++ 于各種項目。




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语