cJSON對json資料的解析

2021-10-08 23:37:16 字數 2406 閱讀 2955

目標:對下面這種結構的json資料解析

,]

}

處理步驟:

1. 將json資料儲存在a.txt內

2. 用fopen對資料檔案進行讀取

3. 將讀取出的資料流寫入到乙個字串陣列中

4. 用cjson_parse將字串陣列轉換為json資料物件root

5. 對root由外層向內層解析

**如下:

#include

#include

"cjson.h"

using namespace std;

void

weathertest()

fseek

(fp,0,

seek_end);

//將流指標fp指向末位

int file_size =

ftell

(fp)

;//獲得流的長度

fseek

(fp,0,

seek_set);

//將流指標fp指向流開始

char

* buffer =

(char*)

malloc

(file_size *

sizeof

(char))

;memset

(buffer,

0, file_size +1)

;//加的最後一位用作結束符\0, 避免讀取buffer的時候因沒有結束符而越界

int ret =

fread

(buffer, file_size,

sizeof

(char

), fp)

;//形參1:將要寫入的容器,形參2:每個讀取單元所佔位元組數,形參3:讀取的單元數,形參4:流指標if(

-1== ret)

printf

("%s\n"

, buffer)

;fclose

(fp)

;//關閉檔案

//將該字串資料轉換為json資料物件

cjson *root =

cjson_parse

(buffer)

;//解析if(

!root)

//若root為nullptr指標,則解析失敗

auto value =

cjson_getobjectitem

(root,

"time");

//根據key值獲取對應的valueif(

!value)

char

*data =

cjson_print

(value)

;//把資料轉換為字串輸出

printf

("time = %s\n"

, data)

;free

(data)

;//cjson_pring()會向系統申請記憶體(malloc),每次使用完要記得釋放,否則會造成記憶體洩漏

value =

cjson_getobjectitem

(root,

"result");

if(!value)

auto len =

cjson_getarraysize

(value)

;//result是乙個陣列,此處獲取陣列長度

cjson *

date

(nullptr),*

text_night

(nullptr),*

text_day

(nullptr)

;for

(autoi(

0); i != len;

++i)

//對每個陣列元素進行處理

char

*print1 =

cjson_print

(date)

;char

*print2 =

cjson_print

(text_night)

;char

*print3 =

cjson_print

(text_day)

;printf

("%s\t%s\t%s\n"

, print1, print2, print3)

;free

(print1)

;free

(print2)

;free

(print3);}

cjson_delete

(root);}

intmain()

輸出結果如下

json快速入門(cjson解析)

json是儲存和交換文字資訊的語法,與xml類似。json有兩種結構,分別是陣列和物件 json解析環境 cjson是乙個超輕巧,攜帶方便,單檔案,簡單的可以作為ansi c標準的json解析器,cjson庫包括cjson.h和cjson.c兩個檔案,放入指定目錄直接呼叫就可以了。1.有一對基本的 ...

使用cJSON庫解析JSON

cjson是乙個基於c的json解析庫,這個庫非常簡單,只有cjson.c和cjson.h兩個檔案,支援json的解析和封裝,需要呼叫時,只需要 include cjson.h 就可以使用了,json官方 json json字串 這個json物件只有兩個鍵值對,鍵name對應字串andy,鍵age對...

使用cJSON解析JSON字串

一 為何選擇cjson 我們在使用json格式時,如果只是處理簡單的協議,可以依據json格式,通過對字串 的操作來進行解析與建立。然而隨著協議逐漸複雜起來,經常會遇到一些未考慮周全的地方,需要進一 步的完善解析方法,此時,使用比較完善的json解析庫的需求就提出來了。基於方便引用的考慮,我們希望這...