json入門(二)

背景php

以前最先的時候,也見過相似於這樣的字符串:html

{"list":[          
{"ArticleId":7392749,"BlogId":1158641,"CommentId":2182295,"Content":"偶是來測試評論滴,哈哈","ParentId":0,"PostTime":"2分鐘前","Replies":null,"UserName":"crifan","Userface":"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"}python

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

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

什麼是JSON

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

此處,先引用:函數

JSON Wiki中的話:工具

JSONJavascript Object Notation)是一種輕量級的數據交換語言,以文字爲基礎,且易於讓人閱讀。儘管JSON是在Javascript的一個子集,但JSON是獨立於語言的文本格式,而且採用了相似於C語言家族的一些習慣。post

此處,簡單能夠理解爲:學習

JSON的簡要解釋

  • JSON全稱是Javascript Object Notation,很明顯,是源於Javascript。此處暫可不深究這方面,知道這點便可。

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

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

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

最最基本的語法是:

JSON的最基本語法

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

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

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

JSON的例子

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

須要說明的是,因爲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.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才行。

詳見:

【已解決】C#中,Json字符串轉字典,並得到對應的Dictionary的鍵值

相關文章
相關標籤/搜索