現在的位置: 首頁 > 綜合 > 正文

什麼是JSON?為什麼需要JSON

2020年02月24日 綜合 ⁄ 共 2320字 ⁄ 字型大小 評論關閉

  什麼是JSON?

  JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。

  json前兩個字就是js,說明其與js必然存在一些聯繫,其實json可以理解為盛裝js數據的一個容器(不是只能裝js的,不要扣這些),說白了,就是儲存數據的一個小玩意兒。其實如果你身邊有搞前端的同學,不難發現,他們會經常說介面、報文,對於一個後端小白的我來說,也很想明白這究竟是個什麼東東,最近工作一直做前後端開發,所以跟json結下了緣。

  前端中json大致是形如這個樣子的,就是冒號左邊一個名字(鍵),右邊是具體的值(值),其實就是鍵值對。

  var json = {"xxx":"xxx"};

  右邊可以是一個數字,可以是一個對象,可以是字元串,可以是一個數組,可以是一個json(套娃),我給大家舉個例子大家就明白了,既然是容器,必然要有大的,有小的,啥都能裝。

  裝數字:

  var feeInfoList = {"num":11};

  通過feeInfoList.num就可以拿到num對應的值:11,很簡單吧?

  裝字元串:

  var feeInfoList = {"name":"小斌哥"};

  通過feeInfoList.name,就能拿到帶雙引號的"小斌哥"啦~

  裝對象:

  var 小斌哥= {"name":"小斌哥", "age":21, "sex":"爺們"};

  小斌哥這個對象裡面包含姓名、年齡和性別,多個數據可以通過逗號隔開,因此,小斌哥這個對象就生成了!!

  裝數組

  var array = {"array":[

  {

  "name":"小斌哥",

  "sex":"爺們",

  "age":21

  },

  {

  "name":"貂蟬",

  "sex":"美女",

  "age":18

  }

  ]};

  直接看可能比較懵,但是仔細看,鍵是"array",值就是後面的一大坨,對嗎?那一大坨拆開看,是不是就是一個個的對象,對象之間用逗號隔開了,對象裡面有姓名、性別和年齡,每一個屬性都是用鍵值對裝的,並且用逗號隔開,是不是很容易呢,其實如果別人給你一大堆報文,可以用utools(一個軟體),直接複製進去,就可以清楚的看到json格式了,很方便。

  裝json:

  var json = {"json":{"json":{

  "json":11

  }

  }

  }

  哈哈,所謂套娃,就是可以在值那裡一直用json,所以想拿到11,就需要通過:json.json.json.json,就能取到11了,不過這只是一個演示,除非真的有這樣的需求,要不然還是不要這麼玩兒,他畢竟只是一個容器,以盛裝數據並且簡潔易懂為主。

  為什麼需要JSON?

  等到去了公司做前後端分離的項目的時候,大家會發現前端與後端交互大部分都是介面(其實就是用json裝的一些數據),舉個栗子,用戶在瀏覽器輸入了用戶名和密碼要登錄,這個輸入的用戶名和密碼肯定會發到後台,後台進行一系列的處理並且給前台反饋結果,畫個圖就是這樣的:

  總之前後端交互就是通過json報文,可以聯想一下最開始學javaWeb的時候我們是怎麼進行前後端交互的:

  String name = request.getParameter("name");

  String pwd = request.getParameter("pwd");

  有沒有引起你的某種回憶,哈哈~

  為什麼不建議用servlet進行接收前端的數據呢?一個是負載壓力大,後端成了爹了,啥都要管,權重非常高,你每次接收前台的數據都需要初始化載入servlet各種亂七八糟的東西,之後才能進行處理;第二是耦合太高,等你花了半天勁寫完了代碼,需求發生變更,你要改controller層、dao層、service層,該改的不該改的你都得改,體驗過的童鞋麻煩點個贊。。

  總結

  大家可以看到,通過json,非常方便快捷地把一些複雜的對象和數據進行發送。每個公司肯定都對前端的ajax進行了封裝,所以不需要每次都

  $(document).ready(function(){

  var saveDataAry=[];

  var data1={"userName":"zhangsan","address":"bj"};

  var data2={"userName":"lisi","address":"nj"};

  saveDataAry.push(data1);

  saveDataAry.push(data2);

  $.ajax({

  type:"POST",

  url:"userInfo/userUpd",

  dataType:"json",

  contentType:"application/json",

  data:JSON.stringify(saveData),

  success:function(data){

  ... ...

  }

  });

  });

  使用起來也非常的方便~

  另外阿里巴巴有一個fastjson,可以非常快速地把json序列化和反序列化:

  String text = JSON.toJSONString(obj); //序列化

  VO vo = JSON.parseObject("{...}", VO.class); //反序列化

  大家可以試一下。

抱歉!評論已關閉.