背景php
以前最先的時候,也見過相似於這樣的字符串:html
{"list":[ |
很明顯,這樣的字符,看起來,就像是有一種規律的,可是當時只是知道這是個字符串而已。正則表達式
後來,漸漸地,瞭解到,原來這樣的字符串,是有特定的格式和規律的,其叫作JSON字符串。json
後來就專門去查了查json是啥。網絡
此處,先引用:函數
JSON Wiki中的話:工具
JSON(Javascript Object Notation)是一種輕量級的數據交換語言,以文字爲基礎,且易於讓人閱讀。儘管JSON是在Javascript的一個子集,但JSON是獨立於語言的文本格式,而且採用了相似於C語言家族的一些習慣。post
此處,簡單能夠理解爲:學習
JSON全稱是Javascript Object Notation,很明顯,是源於Javascript。此處暫可不深究這方面,知道這點便可。
JSON是一種字符串,有必定特定的語法格式的字符串;
JSON之因此定義這樣的語法格式,目的在於方便數據的交換。即,一些數據,經過JSON這種格式,從一個地方,尤爲是網絡上,發送,傳遞到另一個地方,而後使得接受者,也很容易理解相關的數據。
而具體關於JSON的語法,即規定的怎麼寫,具體是啥樣的格式,再也不贅述,只盡可能簡單的介紹一下:
最最基本的語法是:
對象,即一個變量名,一個值,對應的寫法是:{name:value}
列表,有多個元素是,寫法是:[collection, collection]
餘下的,按照正常邏輯理解便可,好比字符串是兩個雙引號""括起來的,數字是0到9等等。
wiki中舉的例子是:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
{
"firstName"
:
"John"
,
"lastName"
:
"Smith"
,
"male"
:
true
,
"age"
: 25,
"address"
:
{
"streetAddress"
:
"21 2nd Street"
,
"city"
:
"New York"
,
"state"
:
"NY"
,
"postalCode"
:
"10021"
},
"phoneNumber"
:
[
{
"type"
:
"home"
,
"number"
:
"212 555-1234"
},
{
"type"
:
"fax"
,
"number"
:
"646 555-4567"
}
]
}
|
經過此例子,也就算很形象的知道了,JSON算是一個結構很清晰的,用於表示數據的一種格式。
須要說明的是,因爲JSON的發明,就是爲了用於數據交換,因此,在發送JSON字符串以前,其實都不是你所看到的上面的,格式化,帶縮進的那種,都是緊湊型的,字符之間沒有空格的,
就像此文最開始所舉例的那種的,將這些緊湊的數據,發送給別人。
而接受者,做爲人類,想要查看數據,能清晰的看懂數據,通常會用一些工具,好比Notepad++中的插件JSMin,去格式化,
把最開始咱們給出的JSON數據,格式化後的效果爲:
不少程序中,都會遇到JSON字符串,因此就涉及到,如何經過程序處理JSON字符串,好比將JSON字符串,轉換爲對應的字典類的變量等等。
很明顯,固然是能夠經過你手動寫代碼,一點點處理的,可是更明顯,效率很低。
並且現實中,的確是,針對不一樣的語言,已經有了對應的JSON相關庫函數,去用於處理JSON字符串了。
對於這些不一樣語言的,對應的JSON處理的庫,人家JSON官網中,已經幫你整理好了。你本身去看,學習瞭解對應的JSON庫如何使用的,便可。
其中包括了N種語言的,N個JSON處理相關的庫,我就不重複去羅列了,本身去JSON官網看便可。
此處,只是說說,我所用過的一些JSON的庫:
以前折騰過相關的,用Python語言處理JSON字符串的,用的是Python語言內置的Json庫,相對仍是很好用的。
相關Python中如何處理json的示例代碼可參考:
【整理】Python中將(字典,列表等)變量格式化成(漂亮的,樹形的,帶縮進的,JSON方式的)字符串輸出
【經驗記錄】Python中json.loads的時候出錯->要注意要解碼的Json字符的編碼
另外,有時候,遇到一些特殊的狀況,也是能夠藉助BeautifulSoup庫去幫忙處理的:
【已解決】用BeautifulSoup解析Html格式的Json字符串
以前也折騰過C#中處理JSON字符串的。
只不過當時發現C#內置沒有相關的JSON的庫,還須要再安裝第三方的JSON庫,以爲太麻煩,因此暫且放棄了:
【未解決】C#中從Json.Net解析後的Json中得到某個列表類型的變量
就暫且先用正則表達式的類Regex去手動處理,提取所需的內容了。
固然,若是有人有需求,仍是值得去安裝第三方JSON庫,去處理Json字符串的。
後來的一些折騰,C#中,已經能夠很好的處理JSON字符串了。
只是仍是須要依賴於.NET 3.5+中的JavaScriptSerializer才行。
詳見: