扫码关注官方订阅号
var me = { "name":"Zhang", "age":3, "course":{ "name":"HTML5" } }
光阴似箭催人老,日月如移越少年。
// json字符串 var jsonStr = '{ "name":"Zhang", "age":3, "course": { "name": "HTML5" } }'; // json数据 { "name":"Zhang", "age":3, "course": { "name": "HTML5" } } // js对象字面量 var obj = { name: "Zhang", age:3, course: { name: "HTML5" } };
json 字符串就是一个字符串,String 类型,与其他两者就是数据类型的差别,就像字符串 "1" 和数值 1 一样。
String
"1"
1
json 是一种跨语言的约定俗称的数据格式,与 js 对象的差别看起来只是属性加了引号而已,使用时可以当做 js 对象来使用,甚至类型测试和原型树都与 Object 有扯不开的联系。
var json = {"a" : 1}; console.log(typeof json) // object console.log(json instanceof Object) // true console.log([].toString.call(json)) // [object Object] console.log(json.constructor) // function Object() { } console.log(json.__proto__ == Object.prototype) // true
即使这样,也不能说 json 就是 js 对象,确切的说 js 对象是 json 在 js 语言中的载体。
作为一种跨语言的数据格式,它不能像 js 对象一样添加一个函数作为属性,值不能为 NaN 或 undefined。所能传递的都是各种语言易解析的数据类型。
NaN
undefined
json 本身只是一种数据格式,要想在 js 中使用,就需要依赖语言提供解释器。也就是说,是 js 的 json 解释器把 json 数据转换成了 js 中易使用的 object 类型。
上面已经提到了, js 对象是 json 在 js 语言中的载体,所以在 js 对象没有函数属性与非法值的时候,无需计较它到底是什么。
以下是两者相互转换的方法:
// 字符串转 json var json = JSON.parse('{ "a": 1}'); // 对象转字符串 var jsonStr = JSON.stringify({ b: 2 });
以上是个人理解,至于你信不信……
首先,你有一个JS对象,像:
或者这样:
var me = { name: "Zhang", age: 3, course: { name: "HTML5" } }
上面这两个都是JS中合法的对象,注意看上面对象的属性名有没有加双引号。
使用JSON.stringify,可以将JS对象转化为JSON字符串。
JSON.stringify
var json_me = JSON.stringify(me); // json_me = '{"name":"Zhang","age":3,"course":{"name":"HTML5"}}';
使用JSON.parse,可以将JSON字符串转化为JS对象。
JSON.parse
JS对象
var me_from_parse = JSON.parse(json_me); console.log(me_from_parse);
其实就两种数据,一种是JSON字符串,一种是JS对象,可以相互转换。
JSON字符串
问题中提到的json数据,应该是JSON字符串的别称;对象json表示法应该是一个使用双引号表示属性的JS对象。
json数据
对象json表示法
使用双引号表示属性
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
json 字符串就是一个字符串,
String类型,与其他两者就是数据类型的差别,就像字符串"1"和数值1一样。json 是一种跨语言的约定俗称的数据格式,与 js 对象的差别看起来只是属性加了引号而已,使用时可以当做 js 对象来使用,甚至类型测试和原型树都与 Object 有扯不开的联系。
即使这样,也不能说 json 就是 js 对象,确切的说 js 对象是 json 在 js 语言中的载体。
作为一种跨语言的数据格式,它不能像 js 对象一样添加一个函数作为属性,值不能为
NaN或undefined。所能传递的都是各种语言易解析的数据类型。json 本身只是一种数据格式,要想在 js 中使用,就需要依赖语言提供解释器。也就是说,是 js 的 json 解释器把 json 数据转换成了 js 中易使用的 object 类型。
上面已经提到了, js 对象是 json 在 js 语言中的载体,所以在 js 对象没有函数属性与非法值的时候,无需计较它到底是什么。
以下是两者相互转换的方法:
以上是个人理解,至于你信不信……
首先,你有一个JS对象,像:
或者这样:
上面这两个都是JS中合法的对象,注意看上面对象的属性名有没有加双引号。
使用
JSON.stringify,可以将JS对象转化为JSON字符串。使用
JSON.parse,可以将JSON字符串转化为JS对象。结论
其实就两种数据,一种是
JSON字符串,一种是JS对象,可以相互转换。问题中提到的
json数据,应该是JSON字符串的别称;对象json表示法应该是一个使用双引号表示属性的JS对象。