JSON物件和字串之間的相互轉換 – JSON.parse() 和 JSON.stringify()
阿新 • • 發佈:2019-02-09
所有現代瀏覽器都支援 JSON 物件,有兩個非常有用的方法來處理 JSON 格式的內容:
- JSON.parse(string) :接受一個 JSON 字串並將其轉換成一個 JavaScript 物件。
- JSON.stringify(obj) :接受一個 JavaScript 物件並將其轉換為一個 JSON 字串。
比如我有兩個變數,我要將a轉換成字串,將b轉換成JSON物件:
js 程式碼:- var a={"name":"tom","sex":"男","age":"24"};
- var b='{"name":"Mike","sex":"女","age":"29"}';
在Firefox,chrome,opera,safari,ie9,ie8等高階瀏覽器直接可以用JSON物件的stringify()和parse()方法。
JSON.stringify(obj)將JSON轉為字串。
JSON.parse(string)將字串轉為JSON格式;
上面的轉換可以這麼寫:
js 程式碼:- var a={"name":"tom","sex":"男","age":"24"};
- var b='{"name":"Mike","sex":"女","age":"29"}';
- var aToStr=JSON.stringify(a);
- var bToObj=JSON.parse(b);
- console.log(typeof(aToStr));//string
- console.log(typeof(bToObj));//object
儘管這些方法通常用在物件上,但它們也可以在陣列上使用:
- const myArr =['bacon','letuce','tomatoes'];
- const myArrStr = JSON.stringify(myArr);
- console.log(myArrStr);
- // "["bacon","letuce","tomatoes"]"
- console.log(JSON.parse(myArrStr));
- // ["bacon","letuce","tomatoes"]
ie8(相容模式),ie7和ie6沒有JSON物件,不過http://www.json.org/提供了一個json.js,這樣ie8(相容模式),ie7和ie6就可以支援JSON物件以及其stringify()和parse()方法;你可以在 https://github.com/douglascrockford/JSON-js上獲取到這個js,一般現在用json2.js。
ie8(相容模式),ie7和ie6可以使用eval()將字串轉為JSON物件,
js 程式碼:- var c='{"name":"Mike","sex":"女","age":"29"}';
- var cToObj=eval("("+c+")");
- console.log(typeof(cToObj));
jQuery中也有將字串轉為JSON格式的方法jQuery.parseJSON( json ),接受一個標準格式的 JSON 字串,並返回解析後的 JavaScript (JSON)物件。當然如果有興趣可以自己封裝一個jQuery擴充套件,jQuery.stringifyJSON(obj)將JSON轉為字串。