javascript
JSON的C语言编解码器——cJSON和json-c
http://blog.csdn.net/wadefelix/article/details/6965327
JSON是一種比XML更輕量級的數據交換格式,關于JSON的基礎知識,參考 JSON?http://www.json.org/json-zh.html
看看你使用的語言中是否已有JSON支持,也參考JSON?http://www.json.org/json-zh.html
cJSON是C語言中的一個JSON編解碼器,非常輕量級,C文件只有500多行,速度也非常理想。項目主頁:cJSON | Free software downloads at SourceForge.nethttp://sourceforge.net/projects/cjson/
cJSON也存在幾個弱點:
1不支持[1,2,3,]和{"one":1,}最后多余的那個逗號。這是C語言就開始支持的,JSON RFC文檔中沒有對此說明,只能說這是擴展功能吧。
2 不支持/*注釋*/,和//單行注釋。這也是擴展功能。C/C++/JAVA/JavaScript都支持注釋,所以我也希望在json文件中寫點注釋。
3 使用了個全局變量指示出錯位置。這個在多線程時就有問題啦。
4 沒有封裝文件操作,用戶需要自己讀寫文件。
雖然功能不是非常強大(上面124都是非常容易添加少數幾行代碼都可以支持的),但cJSON的小身板和速度是最值得贊賞的。其代碼被非常好地維護著,結構也簡單易懂,可以作為一個非常好的C語言項目進行學習(支持上面12兩個功能可以作為學習后的作業)。其解析核心是通過遞歸函數完成的,不過放心它的每個函數都非常非常節省資源。
如下圖是[1,"Two",{"Three":3,"3":True}]這個JSON對象用cJSON解析后內存中的數據結構。
json-c是另外一個C語言項目,提供了所有的功能,甚至支持單引號字符串,但是結構較之cJSON更為復雜。解析字符串的核心函數沒有使用遞歸實現,最多支持32層數組或對象嵌套(用到這么多層的JSON對象該有多復雜啊???),解析時使用了一堆狀態在跳來跳去,加上層級跳轉,閱讀時容易發暈。
json-c項目主頁:jehiah/json-c - GitHub?https://github.com/jehiah/json-c
AutoIt語言的json支持 - 流浪者幸運(livemylife.cn) - 博客頻道 - CSDN.NEThttp://blog.csdn.net/wadefelix/article/details/6220421
總結
以上是生活随笔為你收集整理的JSON的C语言编解码器——cJSON和json-c的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySql 内存表使用
- 下一篇: c语言解析json数据