日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

cjson读取json文件_JSON格式介绍和使用cJSON解析 | 学步园

發布時間:2023/12/10 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cjson读取json文件_JSON格式介绍和使用cJSON解析 | 学步园 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://hi.baidu.com/xp2xp3/item/c1ff4f1c2ed37adf9c778ab9

在閱讀本文之前,請先閱讀下《Rss Reader實例開發之系統設計》一文。

Rss Reader實例開發中,進行網絡數據交換時主要使用到了兩種數據格式:JSON與XML。本文主要介紹JSON格式的簡單概念及JSON在Rss Reader中的應用,XML格式的使用將在下一篇文章做介紹。

JSON簡介:

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,可以把JSON的結構理解成無序的、可嵌套的key-value鍵值對集合,這些key-value鍵值對是以結構體或數組的形式來組織的。同一級的key-value鍵值對之間是用一個“,”(逗號)隔開,每個key-value鍵值對是由一個key后面緊接一個“:”(冒號),冒號后面是這個key對應的value。Key是一個word,由大小寫字母、下劃線及數字組成,可以由雙引號封閉,也可以不加雙引號;而value的取值集為:Number、Boolean(true或false)、null、String、Object及Array,如圖一:

(圖一)

1、Number:數值,包括整形數與浮點數,如:123、0.83、-2.7e10。其結構如圖二:

(圖二)

2、String:字符串,是以雙引號封閉起來的一串字符,使用反斜杠來轉義,如:\\、\n等,JSON中字符串的概念與C/C++或者JAVA語言里的字符串概念差不多,如:”abc”。其結構如圖三:

(圖三)

3、Object:對象,也可理解成一個結構體,是以一對大括號封閉起來的無序的key-value鍵值對集合,例如:{name:"Susan", age:27, birthday:{year:1984, month:2, day:11}};也可以寫成:{"name":"Susan", "age":27, "birthday":{"year":1984, "month":2, "day":11}};其結構如圖四:

(圖四)

4、Array:數組,JSON的數組是一個以中括號封閉起來的value的集合,即數組內的各個成員的數據類型可以不一樣,這一點就跟C/JAVA的數組概念不同了。每個value之間是由一個“,”(逗號)隔開,例如:[123, abc, false, {name:mj}];其結構如圖五:

(圖五)

關于JSON的詳細說明與教程請自行到網絡上搜索,有很多。

下面我們就來動手寫一個例子:

{

result:true,

root:{

version:"201007091640",

channels:[

{

name:"新聞中心",

subchnls:[

{

title:"焦點新聞",

link:"http://news.mtc.sohu.com/news/channel/1/news.rss",

desc:"家事、國事、天下事"

},

{

title:"新聞頻道",

link:"http://news.mtc.sohu.com/news/channel/2/news.rss",

desc:"讓您實時掌握國際動態"

},

{

title:"軍事頻道",

link:"http://news.mtc.sohu.com/news/channel/3/news.rss",

desc:"軍事"

}

]

},

{

name:"體育新聞",

subchnls:[

{

title:"體育要聞匯總",

link:"http://news.mtc.sohu.com/news/channel/4/news.rss",

desc:"erewr"

},

{

title:"國際足壇",

link:"http://news.mtc.sohu.com/news/channel/5/news.rss",

desc:"werewr"

}

]

}

]

}

}

這段JSON描述了一個對象(最外層大括號包圍的部分),為了方便區分,我們就將其稱為對象A吧。對象A有兩個Item(即key-value鍵值對),一個是result,其值為true;一個是root,其值為一個對象,稱為對象B。對象B也有兩個Item,一個是version,其值為一個字串” 201007091640”;一個是channels,其值是一個數組,而數組的成員都是一個對象,每個對象又包含兩個Item,一個是name,值分別為字串"新聞中心"和"體育新聞";一個是subchnls,值都是數組,每個數組又分別有若干個成員,每個subchnls成員也都是一個對象,每個對象都有三個Item:title、link和desc。也許你看到這,已經是一頭大汗了,不過沒關系,我們來帖張這段JSON文本對應的結構圖,有圖就有真相,請看圖六:

(圖六:黑色實線為對象,虛線為值,橙色實線為數組)

在RssReader中使用cJSON:

在RssReader中使用了開源庫cJSON來解析JSON,所以在此就介紹下cJSON的使用:

在CJSON中,一個key-value鍵值對被解析并存放在一個cJSON結構體變量中,其value取值集為:FALSE,TRUE,NULL,NUMBER,STRING,OBJECT,ARRAY。它們分別被存放在CJSON對象的child、valuestring、valueint、valuedouble變量中,而用于判斷某個CJSON對象value的數據類型則是CJSON對象的type變量,其取值范圍與CJSON對象的value集是一一對應的,如:cJSON_False對應FALSE。

cJSON Types:

#define?????cJSON_False?????0

#define?????cJSON_True??????1

#define?????cJSON_NULL??2

#define?????cJSON_Number????3

#define?????cJSON_String????4

#define?????cJSON_Array?????5

#define?????cJSON_Object????6

cJSON 結構體:

typedefstructcJSON

總結

以上是生活随笔為你收集整理的cjson读取json文件_JSON格式介绍和使用cJSON解析 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。