JS物件和JSON字串相互轉化總結
阿新 • • 發佈:2019-01-23
在web開發中,一般情況下需要前端和伺服器的交換資料,我們一般使用JSON來完成資料的傳輸,JavaScript操作的物件是一般是變數;因此我們需要將JSON字串轉換為JS變數,下面總結JS物件和JSON字串相互轉換的方法總結;
變數區分
//Json字串
var json_str = '{"name":"xiao","age":12}';
//JS物件(字串常量法):
var js_obj = {name: "xiao", age: 12};
//Josn物件:
var json_obj = {"name":"xiao","age":12};
//json陣列:
var objArray = [{"name" :"xiao","age":12}, {"name":"xiao","age":12}];
JSON物件和JS物件本質是一致的,至少內在表現形式是一樣的,如下圖所示:
JSON字串->JS物件
JSON字串轉換為JS物件大致有三種,分別是eval()原生函式,JSON提供的Parse方法,以及new Function方法,下面一一測試。
- eaval()函式
//需要增加一對括號,避免語法錯誤,該方法存在效能和安全方面的問題,不建議使用。
//方法一:
var json_obj_case1 = eval('(' + json_str+')');
加上圓括號的目的是迫使eval函式在處理JavaScript程式碼的時候強制將括號內的表示式(expression)轉化為物件,而不是作為語句(statement)來執行,這是eval本身的問題。
- Parse方法
//方法二:
var json_obj_case2 = json_str.parseJSON();
var json_obj_case3 = JSON.parse(json_str);
- new Function()方法
//方法三:
var json_obj_case4 = (new Function("return " + json_str))();
以下是goole瀏覽器中轉換的測試結果:
JS物件->JSON字串
相反的,我們也會遇到需要將JS物件轉換為字串,傳遞給伺服器,下面就是將JS物件轉換為JSON字串,有兩種方法:
- stringify函式
//方法一
var json_str_case1 = JSON.stringify(js_obj);
- toJSONString函式
//方法二
var json_str_case2 = js_obj.toJSONString();
以下是JSON物件,JS物件轉換為JSON字串的測試結果: