1. 程式人生 > >JS物件和JSON字串相互轉化總結

JS物件和JSON字串相互轉化總結

在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字串的測試結果:

這裡寫圖片描述