久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Linux json-c使用(yong)

Linux json-c使用 時(shi)間:2018-08-16      來源:未知

一、JSON介紹

JSON(JavaScript Object Notation) 是一種輕量級的(de)(de)數據交換格式。 易(yi)于(yu)(yu)人(ren)閱讀(du)和編寫。同時也易(yi)于(yu)(yu)機器(qi)解析和生(sheng)成(cheng)。 它基于(yu)(yu)JavaScript Programming Language,Standard ECMA-262 3rd Edition - December 1999的(de)(de)一個子(zi)集(ji)。 JSON采用完全(quan)獨立于(yu)(yu)語言的(de)(de)文本格式,但是也使用了類似于(yu)(yu)C語言家族的(de)(de)習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特(te)性(xing)使JSON成(cheng)為理想的(de)(de)數據交換語言。

JSON建(jian)構(gou)于兩種(zhong)結構(gou):

(1) “名稱/值(zhi)”對的集合(A collection of name/value pairs)。不同(tong)的語言(yan)中,它被理解(jie)為(wei)對象(object),紀(ji)錄(record),結構(struct),字典(dictionary),哈希表(hash table),有(you)鍵(jian)列(lie)表(keyed list),或者關聯(lian)數組(zu) (associative array)。

(2)值的有序列表(An ordered list of values)。在大部分語言中,它被(bei)理(li)解為數組(array)。

這(zhe)些都是常見(jian)的數據(ju)結(jie)構。事實上(shang)大(da)部分現代計算機語言都以某種形式(shi)支(zhi)持(chi)它們。這(zhe)使得一(yi)種數據(ju)格式(shi)在同樣(yang)基(ji)于(yu)這(zhe)些結(jie)構的編程(cheng)語言之間(jian)交換成為可能。

JSON具有以(yi)下(xia)這些形式:

對(dui)象(xiang)是一(yi)個(ge)無序的“‘名稱/值’對(dui)”集合。一(yi)個(ge)對(dui)象(xiang)以“{”(左(zuo)括(kuo)(kuo)號)開始,“}”(右(you)括(kuo)(kuo)號)結束。每個(ge)“名稱”后(hou)跟(gen)一(yi)個(ge)“:”(冒號);“‘名稱/值’ 對(dui)”之間使(shi)用“,”(逗號)分隔(ge)。

數組是值(value)的有序(xu)集合。一個數組以“[”(左中(zhong)括號(hao)(hao))開(kai)始,“]”(右中(zhong)括號(hao)(hao))結束。值之(zhi)間使用“,”(逗號(hao)(hao))分隔。

值(value)可以(yi)是雙(shuang)引號(hao)括起來的字(zi)符串(chuan)(string)、數(shu)值(number)、true、false、 null、對象(object)或者數(shu)組(array)。這些結構可以(yi)嵌套。

字(zi)符(fu)串(string)是由(you)雙引號(hao)包圍的(de)任意數量Unicode字(zi)符(fu)的(de)集合(he),使用(yong)反(fan)斜線轉義。一(yi)個字(zi)符(fu)(character)即一(yi)個單獨(du)的(de)字(zi)符(fu)串(character string)。

字符串(string)與C或者Java的字符串非常(chang)相似。

數值(number)也與C或者Java的(de)數值非常相(xiang)似。除去未曾(ceng)使用(yong)的(de)八進(jin)制(zhi)與十六進(jin)制(zhi)格(ge)式。除去一些編碼細節。

空白可以(yi)加入到任何(he)符號之間。以(yi)下描述了完(wan)整的語言(yan)。

二、JSON對象結構

JSON結構共有2種:

(1)對象結構

(2)數組結構

JSON,簡單來說就(jiu)是JavaScript中的對象或(huo)數組,所以(yi)這兩種結構就(jiu)是對象和數組。通(tong)過這兩種結構就(jiu)可(ke)以(yi)表示各種復雜的結構。

1、JSON對象結構

對象結構(gou)是使用(yong)大(da)括(kuo)號(hao)“{}”括(kuo)起來的,大(da)括(kuo)號(hao)內(nei)是由(you)0個(ge)(ge)或多(duo)個(ge)(ge)用(yong)英文逗號(hao)分隔(ge)的“關鍵字:值”對(key:value)構(gou)成的。

語法:

varjsonObj =

{

"鍵名1":值1,

"鍵名2":值2,

……

"鍵名n":值n

}

說明:

jsonObj指的是(shi)json對象。對象結構是(shi)以(yi)“{”開始,到(dao)“}”結束。其中“鍵名(ming)”和“值(zhi)”之(zhi)間(jian)用英文冒(mao)號構成(cheng)對,兩個“鍵名(ming):值(zhi)”之(zhi)間(jian)用英文逗號分隔(ge)。

注意,這里的鍵名是字符串(chuan),但是值可(ke)以是數值、字符串(chuan)、對象、數組或邏輯(ji)true和false。

舉例:

<!DOCTYPE html>

<html xmlns="//www.w3.org/1999/xhtml">

<head>

<title></title>

<script type="text/javascript">

 varobj =

 {

 "name":&quot;helicopter",

 "age":23,

//JSON對(dui)(dui)象內部也有一個JSON對(dui)(dui)象

 hobby:

{

 "first":"swimming",

"second":"singing",

"third":"dancing"

}

}

 //讀取JSON數(shu)據

document.write("名字(zi)是:"+obj.name+"<br>";);

document.write("第一項(xiang)愛好是:&quot;+obj.hobby.first);

</script>

</head>

<body>

</body>

</html>

在瀏覽(lan)器預覽(lan)效果(guo)如(ru)下:

2、JSON對象結構

JSON數組結構是用(yong)中括(kuo)號&ldquo;[]”括(kuo)起來,中括(kuo)號內部由0個或多個以英(ying)文(wen)逗號“,”分(fen)隔的值列(lie)表組成。

語(yu)法(fa):vararr =

[

{

"鍵(jian)名(ming)1":值(zhi)1,

"鍵名2":值2

},

{

"鍵(jian)名3":值3,

"鍵(jian)名4":值(zhi)4

},

……

]

說明:

arr指的是json數(shu)(shu)組。數(shu)(shu)組結(jie)構是以“[”開始(shi),到“]”結(jie)束,這(zhe)一點跟JSON對(dui)象不同。不過在JSON數(shu)(shu)組結(jie)構中,每一對(dui)“{}”相(xiang)當于一個JSON對(dui)象,大家(jia)看(kan)看(kan)像不像?而且語法都非常類似。

注意,這里的鍵名(ming)是字符串,但是值(zhi)可以是數值(zhi)、字符串、對(dui)象(xiang)、數組或邏輯true和false。

舉例:

<!DOCTYPE html>

<html xmlns="//www.w3.org/1999/xhtml">

<head>

<title></title>

<script type="text/javascript">

vararr =

[

{

"name":"小(xiao)明",

"age":23,

"gender":"男(nan)"

},

{

"name":"小紅",

"age":21,

"gender":"女"

}

]

//讀取JSON數據

document.write("第一個學生的名字是:"+arr[0].name+"<br>");

 document.write("第(di)二(er)個學生(sheng)的性別是:"+arr[1].gender+"&lt;br>");

</script>

</head>

<body>

</body>

</html>

在瀏覽(lan)器預覽(lan)效果如下:

三、普通字符串、JSON字符串和JSON對象

初學者(zhe)經常(chang)有一個困惑,就是分(fen)不清(qing)普通字(zi)符(fu)串(chuan)、JSON字(zi)符(fu)串(chuan)和JSON對象。其實這(zhe)3者(zhe)是非常(chang)容易區分(fen)的(de)。

1、普通字符串

字(zi)符(fu)串嘛,大家都知道是使用單引號(hao)(hao)或(huo)雙(shuang)引號(hao)(hao)括起(qi)來(lai)的(de)一(yi)串字(zi)符(fu)。

舉例:

varstr = "綠葉學習網json教程(cheng)";

2、JSON對象

JSON對(dui)象我們在“JSON對(dui)象結構”這一節已經詳細為(wei)大家講(jiang)解了。JSON對(dui)象,指的是符合JSON格(ge)式要求的JavaScript對(dui)象。

舉例:

varjsonObj = {"name":"helicopter","age":23,"gender";:"男"};

3、JSON字符串

JSON字符串,指的是符合“JSON格式”的字符串。

JSON字符串要求兩(liang)點(dian):

(1)必須是字符串,也就是要用單引號或雙引號括起來;

(2)必須符合“JSON”格式。

舉例:

varjsonStr = '{"name": "helicopter", "age":23, "gender": "男"}';

JSON字符(fu)串(chuan)說白了就是(shi)在JSON對象外面加(jia)一(yi)對單引號。

大家(jia)好好對(dui)比一下,就知道普通字符串(chuan)、JSON對(dui)象和(he)JSON字符串(chuan)的區別了。

四、Linux JSON庫的安裝

1.下載json-c的源碼

JSON下(xia)載地址(zhi)://github.com/json-c/json-c/wiki

2.解壓json-c的源碼包

tar -xvf json-c-0.10.tar.gz

3.配置json-c的源碼包

(1)在x86平臺配置

./configure --prefix=/usr

(2)在ARM平臺配置

./configure --prefix=安裝路徑 --host=交叉開(kai)發工(gong)具鏈前(qian)綴

例如(ru)安(an)裝路(lu)徑為"/home/linux/json/install" 交叉(cha)開發工具鏈前綴(zhui)為arm-none-linux-gnueabi-,則指定configuer參數如(ru)下:

./configure --prefix=/home/linux/json/install --host=arm-none-linux-gnueabi

4.編譯

make

5.安裝

make install

注意:

在(zai)x86平(ping)臺(tai)安裝(zhuang)的時候(hou),由于(yu)(yu)我們指(zhi)定的/usr目錄,普通用(yong)戶對于(yu)(yu)這個目錄是沒有寫(xie)權限(xian)的,所以在(zai)安裝(zhuang)的時候(hou)會(hui)提示"Permission denied",解決方法是以超級用(yong)戶身(shen)份執行。

五、Linux JSON庫的使用

注意:

在編(bian)譯的時(shi)候(hou),會提示"/usr/include/json/json.h:27:34: fatal error: json_object_iterator.h: No such file or directory",原(yuan)因(yin)是我們在JSON庫安(an)裝的時(shi)候(hou),沒(mei)有將(jiang)json源碼(ma)下(xia)的" json_object_iterator.h"頭文件安(an)裝到(dao)/usr/include/json目錄下(xia),解決的方法很簡單,我們只(zhi)需要將(jiang)json源碼(ma)樹(shu)下(xia)的" json_object_iterator.h"拷貝到(dao)/usr/include/json目錄下(xia)就可(ke)以(yi)了。

上一篇:RTLinux的介紹

下一篇:Linux設備樹詳解

熱點文章推薦
華清學員就業榜單(dan)
高(gao)薪(xin)學員(yuan)經(jing)驗分享
熱點(dian)新聞(wen)推薦
前臺(tai)專線:010-82525158 企(qi)業培訓洽談(tan)專(zhuan)線(xian):010-82525379 院校合作洽談(tan)專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部