Js中把JSON字串轉換為JSON物件(eval()、new Function())
在JS中將JSON的字串解析成JSON資料格式,一般有兩種方式:
1.一種為使用eval()函式。
2. 使用Function物件來進行返回解析。
第一種解析方式:使用eval函式來解析,並且使用jQuery的each方法來遍歷
用jQuery解析JSON資料的方法,作為jQuery非同步請求的傳輸物件,jQuery請求後返回的結果是json物件,這裡考慮的都是伺服器返回JSON形式的字串的形式,對於利用JSONObject等外掛封裝的JSON物件,與此亦是大同小異,這裡不再做說明。
這裡首先給出JSON字串集,字串集如下:
程式碼如下 | 複製程式碼 |
var data = " { |
這裡以jQuery非同步獲取的資料型別——json物件和字串為依據,分別介紹兩種方式獲取到的結果處理方式。
1、對於伺服器返回的JSON字串,如果jQuery非同步請求沒做型別說明,或者以字串方式接受,那麼需要做一次物件化處理,方式不是太麻煩,就是將該字串放於eval()中執行一次。這種方式也適合以普通JavaScipt方式獲取json物件,以下舉例說明:
程式碼如下 | 複製程式碼 |
var dataObj = eval("(" + data + ")"); // 轉換為json物件 |
為什麼要 eval這裡要新增 “("(" + data + ")");” 呢?
原因在於:eval本身的問題。 由於json是以“{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表示式。
加上圓括號的目的是迫使eval函式在處理JavaScript程式碼的時候強制將括號內的表示式(expression)轉化為物件,而不是作為語句(statement)來執行。舉一個例子,例如物件字面量{},如若不加外層的括號,那麼eval會將大括號識別為JavaScript程式碼塊的開始和結束標記,那麼{}將會被認為是執行了一句空語句。所以下面兩個執行結果是不同的:
程式碼如下 | 複製程式碼 |
alert(eval("{}"); // return
undefined |
對於這種寫法,在JS中,可以到處看到。
如: (function(){})(); 做閉包操作時等。
程式碼如下 | 複製程式碼 |
alert(dataObj.root.length);//輸出root的子物件數量 //輸出每個root子物件的名稱和值 |
2、對於伺服器返回的JSON字串,如果jQuery非同步請求將type(一般為這個配置屬性)設為“json”,或者利用$.getJSON()方法獲得伺服器返回,那麼就不需要eval()方法了,因為這時候得到的結果已經是json物件了,只需直接呼叫該物件即可,這裡以$.getJSON方法為例說明資料處理方法:
程式碼如下 | 複製程式碼 |
$.getJSON("http://www.111cn.net/", {param: "snsgou"}, function (data) { // 此處返回的data已經是json物件 // 以下其他操作同第一種情況 $.each(data.root, function (index, item) { if (index == 0) { return true; // 同countinue,返回false同break } alert("name:" + item.name + ",value:" + item.value); }); }); |
這裡特別需要注意的是方式1中的eval()方法是動態執行其中字串(可能是js指令碼)的,這樣很容易會造成系統的安全問題。所以可以採用一些規避了eval()的第三方客戶端指令碼庫,比如JSON in JavaScript就提供了一個不超過3k的指令碼庫。
第二種解析方式:使用Function物件來完成,它的典型應用就是在jQuery中的AJAX方法下的success等對於返回資料data的解析
程式碼如下 | 複製程式碼 |
var json='{"name":"CJ","age":18}'; data =(new Function("", "return " + json))(); |
此時的data就是一個會解析成一個 json物件了
相關推薦
Js中把JSON字串轉換為JSON物件(eval()、new Function())
在我們利用js操作json資料時一般會用到eval進行資料轉換了,但有些朋友還喜歡使用function來轉換,下面我就給大家總結一下具體例子。 在JS中將JSON的字串解析成JSON資料格式,一般有兩種方式: 1.一種為使用eval()函式。 2. 使用Function物
js 將json字串轉換為json物件的方法解析(簡單處理JSON語法格式校驗問題)
js 將json字串轉換為json物件的方法解析 將json字串轉換為json物件的方法。在資料傳輸過程中,json是以文字,即字串的形式傳遞的,而JS操作的是JSON物件,所以,JSON物件和JSON字串之間的相互轉換是關鍵 例如: JSON字串: var str1 = ‘{
js-json字串轉換為json物件
來源:http://www.jb51.net/article/43136.htm 將json字串轉換為json物件的方法。在資料傳輸過程中,json是以文字,即字串的形式傳遞的,而JS操作的是JSON物件,所以,JSON物件和JSON字串之間的相互轉換是關鍵 例如:
Android開發-進階:Json字串轉換為java物件的各種實現方法[json_lib框架、Gson、org.json]
JSON (JavaScript Object Notation) 是一種輕量級的資料交換格式。易於人閱讀和編寫。同時也易於機器解析和生成。它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition
將json字串轉換為json物件
一般處理伺服器傳來的json值時,我們都會用兩種方式進行處理: 1.一種為使用eval()函式。var dataObj=eval("("+data+")");//轉換為json物件(注:data為json資料); 2. 使用Function物件來進行返回解析。var js
前臺JSON字串轉換為JSON物件
開發中我們常常會使用到JSON物件,那麼我們在前臺怎樣將一個JSON字串轉換為JSON物件呢。 在這裡我提供了兩種方法,當然這兩種方法網上都是已經有的,我也只是整理一下更方便各位檢視而已。 <!DOCTYPE html PUBLIC "-//W3C//DTD HT
Json字串轉換為JS物件方法
一般JSON字串轉換為JS物件,都使用var jsonStr="{a:1}";var jsonObj = eval("("+jsonStr+")");今天學習JQuery原始碼看到一下方法,原來還可以這樣解析JSON字串: parseJSON: function( data
JS字串轉換為JSON的四種方法筆記
1、jQuery外掛支援的轉換方式: 示例: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串轉換成json物件 2、瀏覽器支援的轉換方式(Firefox,chrome,opera,safari,ie)
java將JSON字串轉換為實體類物件,基於net sf json實現
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
做一次面向物件的體操:將JSON字串轉換為巢狀物件的一種方法
能不能把這個JSON串轉成相應的物件,更易於使用呢? 為了方便講解,這裡重複寫下JSON串。 { “item:s_id:18006666”: “1024”, “item:s_id:18008888”: “1024”, “item:g_id:1800
用json.loads()將字串轉換為json格式出錯
今天爬取今日頭條的街拍時,需要將裡面的一個字串變為json格式,結果直接轉換就出現了 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
字串轉換為JSON物件,資料精度丟失
字串轉換為JSON物件,資料精度丟失 今天在專案開發中發現了資料提交後臺處理後,精度改變問題。在一陣除錯後,發現是JSON轉換出了問題。需求是匯入一個excel表格,然後顯示內容,最後存到資料庫中。讀入表格時內容顯示:![正確資料](https://img-blog.csdn.net/20
JSON字串轉換為Map
本文是利用阿里巴巴封裝的FastJSON來轉換json字串的。例子如下: package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONO
將資料庫中查詢的結果轉換為json
呼叫介面,無非也就是開啟連結 讀取流 將結果以流的形式輸出將查詢結果以json返回,無非就是將查詢到的結果轉換成jsonObject=============================================================/*** * 將從資料中取到的結果以json的
json格式資料,將資料庫中查詢的結果轉換為json, 然後呼叫介面的方式返回json(方式一)
呼叫介面,無非也就是開啟連結 讀取流 將結果以流的形式輸出 將查詢結果以json返回,無非就是將查詢到的結果轉換成jsonObject ============================================================= /*** * 將從資料中取到的結果以jso
python:linux下字串轉換為JSON
JSON是一種輕量級的資料交換格式,易於人類閱讀和編寫,同時也易於機器解析和生成。由於JSON的諸多優點,已經廣泛使用在各個系統中,因此,我們經常會有將JSON字串轉換為JSON物件的需求。 例如,在筆者的工作過程中,我們的系統會呼叫底層服務的API,底層服務的API一般都是以JSON的格式返回,為
JS中定義List然後轉換成json交給後臺處理
=================定義List方法====================== function List(){ this.value = []; /*新增*/ this.add = function(obj){
php使用json_encode()無法將json字串轉換為陣列.轉換的結果的為null
要是使用json_decode() 字串的格式要如下: [ { "a": "hello", "b" : "world" } ]; 如果使用json_decode得到是null ,那麼很可能是 鍵名 沒有加引號 導致 ,要想上面的例子 鍵名a 有加引號這樣才能成功 的轉
如何把表單轉換為Json:
引入json2.js,官網http://www.json.org,為了相容ie6、ie7、ie8、ie9支援javascript的JSON物件了 使用javascript中的JSON物件進行轉換: 把表單轉換為請求url: var w= $("form").
json字串轉換為JSONObject和JSONArray .
一.下載json 具體到http://www.json.org/上找java-json下載,並把其放到專案原始碼中,這樣就可以引用其類物件了 二.具體轉化過程 //JSONObject String jsonMessage = "{\"語文\":\"88\",\"數學\":\"78\",\"計算機\":\