前言: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
