首頁  >  文章  >  web前端  >  JSON 必知必會 觀後記

JSON 必知必會 觀後記

高洛峰
高洛峰原創
2016-12-08 14:51:46944瀏覽

術語
可移植性
平台和系統間傳輸資訊的兼容性。
 
JSON
JavaScriptObjectNotation  物件表示法。
 
資料交換格式
用於不同平台或系統間交換資料的文字。
 
字面量
字面意思與其想表達的意思完全一致的值。
 
變數
透過形如X的標識符來表示的,可以修改的一類值。
 
最大移植性
透過確保資料本身對於平台和系統的相容性來提供超越資料格式本身的可攜性。
 
名稱-值對
指擁有名稱和對應值的屬性和特徵(也叫鍵值對)。
 
語法驗證
json格式的驗證。
 
一致性驗證
專注於獨特的資料結構驗證。
 
JSON中的字串類型
一個字串值,如“你是個好人”,使用雙引號包裹。
 
概念

JSON是一種資料交換格式。
 
JSON獨立於程式語言。
 
JSON基於JavaScript物件的字面量表示法(重點在於表示法)。
 
JSON表達資料的方式對通用的程式設計概念都很友善。
 
JSON基於JavaScript物件字面量表示屬性的語法,但不包含與JavaScript物件字面量的函數相關部分。
 
JSON的名稱-值對中,名稱總是被雙引號包裹。
 
JSON的名稱-值對中,值可以是字串,數字,布林值,null,物件式陣列。
 
JSON中的名稱-值對列表總是被花括號包裹。
 
JSON中多個名稱值對使用逗號分隔。
 
JSON檔案使用.json副檔名。
 
JSON的媒體類型是application/json。
 
JSON中的布林類型的值只有true和false,所有字母都必須小寫。
 
JSON中的null值的所有字母必須小寫,表示空值。
 
JSON中的數字類型,一個數字值,如66,可以是正整數,負整數,小數,指數。
 
物件和陣列很關鍵的差異就是,物件是名稱-值對構成的列表或集合,陣列是值構成的列表和集合。
 
物件和陣列另一個關鍵差異是,陣列中所有值應具有相同的資料類型。
 
術語
JSON中的數組
數組是值的集合或列表,每個值都可以是字串,數字,布林值,物件或數組中的任何一種。數組必須被[]包裹,且值與值之間用逗號分隔。
 
JSON中的物件類型
物件類型是使用逗號分隔的名稱-值對構成的集合,並使用{}包裹。
 
JSON Schema
資料交換中的一種虛擬合約。
 
服務端(web開發中的)
當網頁式資源被要求時,在伺服器上執行的一系列操作。伺服器為網路瀏覽器提供其處理和載入的回應。
 
客戶端(web開發中的)
當瀏覽器請求的介面載入完畢時執行的一系列操作,通常是指HTML,CSS和JavaScript。
 
概念
JSON驗證器負責驗證語法錯誤,JSON Schema負責提供一致性驗證。
 
JSONSchema是負責資料接收第一道防線,也是資料傳送方節省時間,確保資料正確的好工具。
 
JSONSchema可以解決下列一致性驗證的問題
  1.值的資料型態是否正確?  可以具體規定一個值是數字、字串等型別。
  2.是否包含所需的資料?  可以具體規定哪些資料是需要的,哪些不需要的。
  3.值的形式是不是我需要的?  可以指定範圍,最小值最大值。
 
JSON本身不構成什麼威脅,它只是文本。
 
在定位JSON安全問題時,應該記住以下3件事.

  1.不要使用頂級數組,頂級數組是合法的JavaScript腳本,他們可以用<script>標籤鏈接並使用。 <br/>  2.對於不想公開的資源,僅允許使用HTTPPost方法請求,而不是Get方法,get方法可以透過url請求,甚至放在script標籤中。 <br/>  3.使用JSON.parser()來取代eval(),eval()函數會將傳入的字串編譯並執行,這會讓你的程式碼易被攻擊,應僅使用JSON.parser()來解析json資料。 <br/> <br/>安全漏洞通常由於開發人員沒有考慮「駭客如何利用這一點」這個問題所導致的。 <br/> <br/>JavaScript的XMLHTTPRequest與WEBAPI之間的關係是客戶端與服務端的關係。 <br/> <br/>XMLHTTPRequest並不僅限於XML,還可以用它來請求JSON資源<br/> <br/>術語<br/>跨站請求偽造(CSRF)<br/>指利用站點對用戶瀏覽器的信任進行攻擊<br/> 值對之外的位於文件最頂層的JSON陣列。 <br/> <br/>注入攻擊<br/>依賴將資料注入到web應用程式以方便惡意資料執行或編譯的攻擊。 <br/> <br/>JSON跨站腳本攻擊<br/>透過截取或將網站中所使用的第三方程式碼更換為惡意腳本,來對網站進行的一種注入攻擊。 <br/> <br/>webApi<br/>透過Http與服務互動的一系列指示與標準。 <br/> <br/>XMLHTTPRequest<br/>一種JavaScript對象,無需刷新頁面即可從一個URL取得數據,常用與AJAX編程。 <br/> <br/>超文本傳輸協定(HTTP)<br/>萬維網所使用的交換資料的基本協定<br/> <br/>序列化<br/>將物件轉換為文字的操作<br/> <br/>反序列化<br/>將文字轉換為物件的操作。 <br/> <br/>概念<br/>網站為人服務,webAPI為程式碼服務,他們都使用Http協定。 <br/> <br/>同源策略使得JavaScript和JSON資源進行客戶端-服務端溝通時出現了一些困難。 <br/> <br/>客戶端跨域的XMLHTTPRequest需要服務端的支援來確保JSON資源請求成功。 <br/> <br/>jQuery是一款提供了JSON請求和解析功能的能夠縮短開發時間的抽象化工具,同時它也解決了跨瀏覽器相容問題。 <br/> <br/>AngularJS MVC的概念<br/>  JSON是模型||資料模​​型<br/>  HTML是視圖,且提供了與模型進行綁定的語法<br/>  控制器是AngularJS語法來定義和操作與模型和Script之間的交互的交互的控制器是AngularJSS。 <br/> <br/>AngularJS使得JavaScript物件和JSON在MVC架構中大放異彩。 <br/> <br/>在關係型資料庫中,常常會存在表格列行以及他們之間的關係,其中會用到主鍵和外鍵。 <br/> <br/>NoSQL資料庫有許多種,它們有與傳統的關係型模型不同的資料儲存與使用方法。 <br/>收到HTTP的API來取得作為JSON文件資源的資料<br/>  5.它使用JavaScript作為查詢語言,並且透過視圖的map和reduce方法來跨API取得資料。 <br/> <br/>在服務端,可以將JSON反序列化為物件而運用在程式設計邏輯中,也可以將物件序列化成JSON格式。 <br/> <br/>JSON同時被服務端和客戶端較好的支持,使得它在web領域從諸多交換資料格式中脫穎而出。 <br/> <br/>術語<br/>同源策略<br/>出於安全考慮,瀏覽器只會要求同一網域的腳本。 <br/> <br/>跨域資源共享CORS<br/>透過設定回應頭,使得跨於請求可以成功。 <br/> <br/>JSON-p<br/>使用script標籤,繞過同源策略限制,從不同網域的伺服器請求JSON。 <br/> <br/>抽象化<br/>一種處理複雜系統的技術,主要思想是將一個大問題轉換為多個小問題<br/> <br/>框架<br/>一種能夠節約時間,已讓我們更專注於構建功能的抽象化工具。 <br/> <br/>Jquery.parserJSON()<br/>一個jquery的函數,它不僅調用JSON.parser()函數,還會相容於那些不支援JSON.parser()函數的老式瀏覽器,且透過驗證字元來評估字串,從而避免了可能的安全問題。 <br/> <br/>jquery.getJSON()<br/>jquery.ajax()函數的簡寫形式,其中包含了將json解析為JavaScript物件的函數。 <br/> <br/>單頁web應用<br/>與傳統的多頁方式不同,著力於提供更無縫的應用體驗的網頁。 <br/> <br/>模型-視圖-控制器(MVC)<br/>一種應用架構模式,它將應用分為3部分:模型(資料)、視圖(展示)、以及控制器(更新模型和視圖)<br/> <br/>AngularJS<br/>一款使用JavaScript物件作為資料模型的JavaScriptMVC框架。 <br/> <br/>關係型資料庫<br/>一種將儲存的資料以可辨識的關係進行結構化儲存的資料庫。 <br/> <br/>NoSQL資料庫<br/>一種不會透過儲存資料間關係來儲存的資料庫。 <br/> <br/>CouchDB<br/>一種以文件為導向的NoSQL資料庫儲存類型,使用JSON文件的形式來儲存資料。 <br/> <br/>ASP.NET<br/>微軟開發的服務端Web框架<br/> <br/>PHP<br/>用於建立動態web頁面的服務端腳本語言<br/> <br/>Ruby on Rails<br/>使用Rubyjs谷歌V8引擎的服務端JavaScript。 <br/> <br/>java<br/>一種物件導向程式語言。 <br/> <br/>JSON也會作為靜止的設定檔<br/> <br/>在考慮用什麼資料格式時,資料的形式和交換資料的系統都應該被考慮到。 ! ! ! JSON不總是最佳選擇。 <br/><br/><br/><br/></script>

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn