總結我們在寫應用程式的時候,經常需要把一些資料儲存到檔案,方便程式啟動時使用,或匯出給其他應用程式使用。常用的用於配置儲存和資料交換的檔案格式有:ini、json和xml。我最初使用ini做為應用程式的啟動配置檔案,當應用程式啟動時,根據ini檔案裡的配置項載入資源來啟動程式。使用xml檔案來儲存結構比較複雜的配置或交換資料。而json這種結構簡單的檔案格式,經常看見測試部的小姐姐們用來寫測試用例。這篇文章的主要目的是記錄我是怎麼使用c語言來生成json的,因為最近在寫乙個練習題:使用c語言實現aidl轉json。練習題沒有完全做好,所以先寫如何使用c語言生成json檔案。
cjson庫檔案一共兩個檔案:cjson.h和cjson.c。這兩個檔案可以從***的awtk開源專案中可以找到: 例1、建立簡單的物件,包含名字和年齡:如:
名字是字串;年齡是數字。
原始碼如下:
cjson* root =
null
;char
* out =
null
; root =
cjson_createobject()
;cjson_addstringtoobject
(root,
"name"
,"zhang san");
//新增字串鍵值對
cjson_addnumbertoobject
(root ,
"age",9
);//新增數字鍵值對
out =
cjson_print
(root)
;//轉成帶格式的字串,含空格和換行等格式
printf
("%s\n"
, out)
;
輸出結果:
例2、建立帶簡單陣列的物件,如:
陣列包含簡單的字串。
原始碼如下:
cjson* root =
null
;char
* out =
null
; root =
cjson_createobject()
;cjson_addstringtoobject
(root,
"name"
,"zhang san");
cjson_addnumbertoobject
(root ,
"age",9
);cjson* curriculum_arr =
cjson_createarray()
;cjson_additemtoarray
(curriculum_arr,
cjson_createstring
("chinese"))
;cjson_additemtoarray
(curriculum_arr,
cjson_createstring
("english"))
;cjson_additemtoobject
(root,
"curriculum"
, curriculum_arr)
; out =
cjson_print
(root)
;printf
("%s\n"
, out)
;
輸出結果:
例3、建立帶複雜陣列的物件,如:
陣列內包含物件,物件包含一些子項。
, ]}
原始碼如下:
cjson* root =
null
;char
* out =
null
; root =
cjson_createobject()
;cjson_addstringtoobject
(root,
"name"
,"zhang san");
cjson_addnumbertoobject
(root ,
"age",9
);cjson* curriculum_arr =
cjson_createarray()
; cjson* curriculum_time =
cjson_createobject()
;cjson_addstringtoobject
(curriculum_time,
"9:00-9:45"
,"chinese");
cjson_addnumbertoobject
(curriculum_time,
"rest",15
);cjson_addstringtoobject
(curriculum_time,
"10:00-10:45"
,"english");
cjson_additemtoarray
(curriculum_arr, curriculum_time)
; cjson* curriculum_time_afternoon =
cjson_createobject()
;cjson_addstringtoobject
(curriculum_time_afternoon,
"14:00-14:45"
,"pe");
cjson_addnumbertoobject
(curriculum_time_afternoon,
"rest",15
);cjson_addstringtoobject
(curriculum_time_afternoon,
"15:00-15:45"
,"mathematics");
cjson_additemtoarray
(curriculum_arr, curriculum_time_afternoon)
;cjson_additemtoobject
(root,
"curriculum"
, curriculum_arr)
; out =
cjson_print
(root)
;printf
("%s\n"
, out)
;
輸出結果:
cjson常用的幾個函式總結如下:
cjson_createobject :生成節點物件,可以使用它建立根節點和子節點
cjson_addstringtoobject:給指定節點新增值是字串型別的子項
cjson_addnumbertoobject:給指定節點新增值是數值型別的子項
cjson_createarray:建立陣列物件
cjson_additemtoarray:給陣列新增子物件
cjson_additemtoobject:給父節點新增子物件
cjson_createstring:生成乙個字串型別物件
cjson_createnumber:生成乙個數值型別物件
cjson_createbool:生成乙個bool型別物件
cjson_delete:釋放記憶體
cjson庫還有很多介面,如果在開發過程中需要使用,可以檢視原始碼,這裡僅列出一些最常用的介面,也是我編寫練習題的時候使用到的介面,僅供參考。走一步,留下乙個腳印,學習快樂~
C 讀取excel檔案,生成json
這段時間在做乙個資料管理系統,需要讀取excel 組裝json,最終存入mongodb,這裡記錄一下解決思路。需要做的準備工作 1.安裝accessdatabaseengine 有32bit和64bit兩個版本,具體要安裝哪個要看你的office程式是32bit的還是64bit的。通常來講,一般是選...
C 讀取excel檔案,生成json
這段時間在做乙個資料管理系統,需要讀取excel 組裝json,最終存入mongodb,這裡記錄一下解決思路。需要做的準備工作 1.安裝accessdatabaseengine 有32bit和64bit兩個版本,具體要安裝哪個要看你的office程式是32bit的還是64bit的。通常來講,一般是選...
go語言json格式解析與生成示例
packagemain import encoding json fmt 目前bitly公司開源了乙個叫做 json的包,在處理未知結構體的json時相當方便 例如json的key是foo,那麼怎麼找對應的字段呢?首先查詢tag含有foo的可匯出的struct欄位 首字母大寫 其次查詢欄位名是foo...