C語言生成json

2021-10-12 00:24:16 字數 3867 閱讀 5030

總結我們在寫應用程式的時候,經常需要把一些資料儲存到檔案,方便程式啟動時使用,或匯出給其他應用程式使用。常用的用於配置儲存和資料交換的檔案格式有: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...