1、JSON數據html
JSON(JavaScript Object Notation,JavaScript對象表示法)是一種輕量級的數據交換格式。web
JSON是「名值對」的集合。結構由大括號'{}',中括號'[]',逗號',',冒號':',雙引號'「」'組成,包含的數據類型有Object,Number,Boolean,String,Array, NULL等。ajax
JSON具備如下的形式:編程
對象(Object)是一個無序的「名值對」集合,一個對象以」{」開始,」}」結束。每一個「名」後跟着一個」:」,多個「名值對」由逗號分隔。如:json
var user={"name":"張三","gender":"男","birthday":"1980-8-8"}
數組(Array)是值的有序集合,一個數組以「[」開始,以「]」結束,值之間使用「,」分隔。如:數組
var userlist=[{"user":{"name":"張三","gender":"男","birthday":"1980-8-8"}},{"user":{"name":"李四","gender":"男","birthday":"1985-5-8"}}];
字符串(String)是由雙引號包圍的任意數量的Unicode字符的集合,使用反斜線轉義。瀏覽器
//js解析json數組的字符串格式 $(".one").click(function () { $.ajax({ url: "../logic/November.ashx", data: { "code": "one" }, type: "post", dataType: "", success: function (data, http) { var json = eval('(' + data + ')'); $.each(json, function (key, val) { $("p").append(key+"---->>> "+val+"<Br>"); }); } }); });
2、JSON對象安全
JSON(JavaScript Object Notation) 是JavaScript編程語言的一個子集。正因JSON是JavaScript的一個子集,因此它可清晰的運用於此語言中。服務器
eval函數 JSON文本轉換爲對象app
爲了將JSON文本轉換爲對象,能夠使用eval函數。eval函數調用JavaScript編輯器。因爲JSON是JavaScript的子集,所以編譯器將正確的解析文本併產生對象結構。文本必須括在括號中避免產生JavaScript的語法歧義。
var obj = eval('(' + JSONTest + ')');eval函數很是快速。它能夠編譯執行任何JavaScript程序,所以產生了安全性問題。當使用可信任與完善的源代碼時才能夠使用eval函數。這樣能夠更安全的解析JSON文本。使用XmlHttp的web應用,頁面之間的通信只容許同源,所以是能夠信任的。但這卻不是完善的。若是服務器沒有嚴謹的JSON編碼,或者沒有嚴格的輸入驗證,那麼可能傳送包括危險腳本的無效JSON文本。eval函數將執行惡意的腳本。
JSON解釋器 JSON.parse、JSON.stringify
使用JSON解析器能夠防止像eval函數轉換JSON文本爲對象那樣的安全隱患。JSON解析器只能辨識JSON文本,拒絕全部腳本。提供了本地JSON支持的瀏覽器的JSON解析器將遠快於eval函數。
目前,Google,Firefox、Opera、IE8以上版本也提供了本地JSON支持。其中,JSON解釋器提供的函數有:
JSON.parse: 將json字符串轉換成內存對象
JSON.stringify: 將json對象轉換成字符串。
更多: