首頁  >  文章  >  web前端  >  使用JSON須知總結

使用JSON須知總結

php中世界最好的语言
php中世界最好的语言原創
2018-04-24 17:18:041340瀏覽

這次帶給大家使用JSON須知總結,使用JSON的注意事項有哪些,以下就是實戰案例,一起來看一下。

名詞

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

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

jquery中ajax執行順序調整

#Ajax與$.ajax實例詳解

#

以上是使用JSON須知總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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