JavaScript中,JSON格式的字符串與JSON格式的對象相互轉化


  前言:JSON是一個獨立於任何語言的數據格式,因此,嚴格來說,沒有“JSON對象”和“JSON字符串”這個說法(然而”菜鳥教程“和”W3school“使用了“JSON對象”和“JSON字符串”這個說法,我也有點懵),可以稱為符合JSON格式的某某對象或者字符串,例如符合JSON格式的js對象,符合JSON格式的字符串(為啥不說成符合JSON格式的js字符串,因為在所有語言中字符串都有相同的定義:數字、字母、下划線組成的一串字符)。

  JSON語法中對於字符串的定義是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。一個字符(character)即一個單獨的字符串(character string)。

 

  1、JSON格式的字符串 ----> JSON格式的js對象:

  • 使用JSON.parse()函數

推薦使用,如果遇到瀏覽器不支持這個方法,保持淡定,到JSON官網下載json2.js,並引入到當前頁面,就能使用了

var jsonStr = "{\"name\":\"zhangsan\",\"age\":23,\"email\":\"chentging@aliyun.com\"}";
var json = JSON.parse(jsonStr);
console.log(json);//輸出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}
  • 使用eval()函數

不推薦使用,會產生安全問題

var jsonStr = "{\"name\":\"zhangsan\",\"age\":23,\"email\":\"chentging@aliyun.com\"}";
var json = eval ("(" + jsonStr + ")");
console.log(json);
//輸出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}
  • 使用jQuery插件jQuery.parseJSON()
var jsonStr = "{\"name\":\"zhangsan\",\"age\":23,\"email\":\"chentging@aliyun.com\"}"; 
var json = jQuery.parseJSON(jsonStr); 
console.log(json);//輸出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}

  補充: 

  JSON解析器的parse()函數對於js對象是否符合JSON格式是不加限定的

  下面這種單引號套雙引號的字符串,不符合JSON語法對字符串的定義,但也能使用上面三種方法轉換成JSON格式的js對象

var jsonStr = '{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}';
var json = jQuery.parseJSON(jsonStr); 
console.log(json);//輸出:Object {name: "zhangsan", age: 23, email: "chentging@aliyun.com"}

 

  2、JSON格式的js對象 ----> JSON格式的字符串:

  • 使用JSON.stringify()
var json = {"name": "zhangsan", "age": 23, "email": "chentging@aliyun.com"};
var jsonStr = JSON.stringify(json);
console.log(jsonStr);//輸出:"{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}"

  補充:

  與JSON解析器的parse()函數一樣,stringify()對於js對象是否符合JSON格式也是不加限定的

var jsonObj = {name : "zhangsan",age : 23, email : "chentging@aliyun.com"};
var jsonStr = JSON.stringify(json);
console.log(jsonStr);//輸出:"{"name":"zhangsan","age":23,"email":"chentging@aliyun.com"}"

 

 

參考文章:

(1) https://www.cnblogs.com/cdf-opensource-007/p/6384724.html

(2) https://www.cnblogs.com/longailong/p/7344567.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM