C語言專案中使用json

2021-08-18 22:53:31 字數 925 閱讀 9742

隨著物聯網的發展,越來越多的物需要連線網路上傳資料,伺服器同時需要對接多種型別的終端,協議的多樣性是加大伺服器端複雜度的乙個重要方面,同時也加大了維護複雜度,經過權衡終端最終採用了json資料格式。

使用的理由:

1、標準  主流的語言都是支援json,方便 終端和伺服器的解析

2、擴充套件性好

3、易於維護

缺點:比二進位制的資料型別占用的頻寬要大

使用方法:

官方專案中有測試包 及使用教程

2、將cjson包 包含到專案中   #include "cjson.h"

3、注意cjson 原始檔中的 malloc  和free方法的替換

void cjson_inithooks(cjson_hooks* hooks)

cjson_malloc = (hooks->malloc_fn)?hooks->malloc_fn:vm_malloc;

cjson_free = (hooks->free_fn)?hooks->free_fn:vm_free;

我使用的是 vm_malloc  和 vm_free  所以替換成我自己的方法了

4、json轉字串後,在字串使用完之後要釋放  因為char* 是使用malloc建立的記憶體空間

out = cjson_print(root);  或   out = cjson_printunformatted(root);    在out使用之後 要手動釋放  否則會導致記憶體洩露

5、同理,字串轉json之後 在json使用完後要 呼叫  cjson_delete()釋放json物件,因為json數是使用malloc建立的記憶體空間 如:

json = cjson_parse((char*)readbuf);     使用後要  cjson_delete(json );

6、常用的函式在網上都能找到  

建立 和 取值

c語言 如何在專案中使用陣列

用乙個最簡單理解的專案來教大家怎麼用陣列吧,就寫乙個錄入並檢視十名同學的成績好了。首先建立乙個陣列,然後迴圈十次每次錄入一名同學成績,十次迴圈結束同學的成績也就全部錄入完畢 include int main printf 檢視十名學生成績 n for int i 0 i 10 i return0 注...

專案中使用ibatis方法

通過daomanagerbuilder載入dao.xml檔案獲取daomanager物件 dao.xml 配置如下 sql map config 配置如下 匯入database.properties檔案 設定資料庫連線屬性 匯入每乙個資料庫實體檔案 檔案指定實體類和資料表對應關係 account.x...

在專案中使用ExtJS

今天extjs官網發布了extjs最新正式版4.2.1。extjs為開發者在開發富客戶的b s應用中提供豐富的ui元件,具有統一的主題,便於快速開發,提高效率。但顯然它並不適合互聯 的開發。builds 壓縮後的extjs 體積更小,更快 docs 開發文件 examples 官方演示示例 loca...