0707什麼是JSON+如何處理JSON字符串0

http://www.tuicool.com/articles/3Y3qm2


背景

之前最早的時候,也見過類似於這樣的字符串:

{"list":[           
{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182295,"Content":"偶是來測試評論滴,哈哈","ParentId":0,"PostTime":"2分鐘前","Replies":null,"UserName":"crifan","Userface":"<a href="http://avatar.csdn.net/E/D/E/3_crifan.jpg" }"="" style="color: rgb(148, 148, 148); text-decoration: none; transition: 0.25s; -webkit-transition: 0.25s; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(148, 148, 148); font-style: italic; font-weight: bold;">http://avatar.csdn.net/E/D/E/3_crifan.jpg"} ,             
{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182254,"Content":"mark__","ParentId":0,"PostTime":"52分鐘前","Replies":null,"UserName":"mars_tl","Userface":"http://avatar.csdn.net/9/3/0/3_mars_tl.jpg"}],"page":{"PageSize":20,"PageIndex":1,"RecordCount":0,"PageCount":0},"fileName":"7392749"}

很明顯,這樣的字符,看起來,就像是有一種規律的,但是當時只是知道這是個字符串而已。

後來,漸漸地,瞭解到,原來這樣的字符串,是有特定的格式和規律的,其叫做JSON字符串。

什麼是JSON

後來就專門去查了查json是啥。

此處,先引用:

JSON Wiki 中的話:

JSON ( J ava s cript O bject N otation)是一種輕量級的 數據交換語言 ,以文字爲基礎,且易於讓人閱讀。儘管JSON是在 Javascript 的一個子集,但JSON是獨立於語言的 文本格式 ,並且採用了類似於 C語言 家族的一些習慣。

此處,簡單可以理解爲:

JSON的簡要解釋

  • JSON全稱是 J ava s cript O bject N otation,很明顯,是源於Javascript。此處暫可不深究這方面,知道這點即可。

  • JSON是一種字符串,有一定特定的語法格式的字符串;

  • JSON之所以定義這樣的語法格式,目的在於方便數據的交換。即,一些數據,通過JSON這種格式,從一個地方,尤其是網絡上,發送,傳遞到另外一個地方,然後使得接受者,也很容易理解相關的數據。

而具體關於JSON的語法,即規定的怎麼寫,具體是啥樣的格式,不再贅述,只盡量簡單的介紹一下:

最最基本的語法是:

JSON的最基本語法

  • 對象,即一個變量名,一個值,對應的寫法是:{name:value}

  • 列表,有多個元素是,寫法是:[collection, collection]

餘下的,按照正常邏輯理解即可,比如字符串是兩個雙引號""括起來的,數字是0到9等等。

JSON的例子

wiki中舉的例子是:

{
     "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字符串是緊湊型(無縮進的)

需要說明的是,由於JSON的發明,就是爲了用於數據交換,所以,在發送JSON字符串之前,其實都不是你所看到的上面的,格式化,帶縮進的那種,都是緊湊型的,字符之間沒有空格的,

就像此文最開始所舉例的那種的,將這些緊湊的數據,發送給別人。

用格式化工具格式化JSON字符串(爲帶縮進的)以方便查看

而接受者,作爲人類,想要查看數據,能清晰的看懂數據,一般會用一些工具,比如 Notepad++ 中的插件 JSMin ,去格式化,

把最開始我們給出的JSON數據,格式化後的效果爲:

jsmin format json

程序中是如何處理JSON的

很多程序中,都會遇到JSON字符串,所以就涉及到,如何通過程序處理JSON字符串,比如將JSON字符串,轉換爲對應的字典類的變量等等。

很明顯,當然是可以通過你手動寫代碼,一點點處理的,但是更明顯,效率很低。

而且現實中,的確是,針對不同的語言,已經有了對應的JSON相關庫函數,去用於處理JSON字符串了。

對於這些不同語言的,對應的JSON處理的庫,人家 JSON官網 中,已經幫你整理好了。你自己去看,學習瞭解對應的JSON庫如何使用的,即可。

其中包括了N種語言的,N個JSON處理相關的庫,我就不重複去羅列了,自己去JSON官網 看即可。

此處,只是說說,我所用過的一些JSON的庫:

Python語言中自帶的處理JSON的庫:json

之前折騰過相關的,用Python語言處理JSON字符串的,用的是Python語言內置的Json庫,相對還是很好用的。

相關Python中如何處理json的示例代碼可參考:

【示例】Python中處理json的示例代碼

相關的折騰,感興趣的可參考:

【整理】Python中將(字典,列表等)變量格式化成(漂亮的,樹形的,帶縮進的,JSON方式的)字符串輸出

【經驗記錄】Python中json.loads的時候出錯->要注意要解碼的Json字符的編碼

另外,有時候,遇到一些特殊的情況,也是可以藉助 BeautifulSoup庫 去幫忙處理的:

【已解決】用BeautifulSoup解析Html格式的Json字符串

C#中處理JSON字符串

之前也折騰過C#中處理JSON字符串的。

只不過當時發現C#內置沒有相關的JSON的庫,還需要再安裝第三方的JSON庫,覺得太麻煩,所以暫且放棄了:

【已放棄】C#中實現將Json字符串轉換爲變量

【已解決】C#中解析Json字符串

【未解決】C#中從Json.Net解析後的Json中獲得某個列表類型的變量

就暫且先用正則表達式的類Regex去手動處理,提取所需的內容了。

當然,如果有人有需求,還是值得去安裝第三方JSON庫,去處理Json字符串的。

後來的一些折騰,C#中,已經可以很好的處理JSON字符串了。

只是還是需要依賴於.NET 3.5+中的JavaScriptSerializer才行。



發佈了48 篇原創文章 · 獲贊 12 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章