话题 首页 > JSON 教程 > JSON 教程话题列表 > 详情

json字符串,json数据,对象的json表示法它们有什么关系吗?如何互相转换?

精华
徐建凯 2016-10-21 04:01:19 浏览(2901) 回复(4) 赞(0)
json字符串,json数据,对象的json表示法它们有什么关系吗?如何互相转换? ``` var me = { "name":"Zhang", "age":3, "course":{ "name":"HTML5" } }```
json

回答(4)

初一扛把子 2016-10-21
// 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 一样。

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。所能传递的都是各种语言易解析的数据类型。

json 本身只是一种数据格式,要想在 js 中使用,就需要依赖语言提供解释器。也就是说,是 js 的 json 解释器把 json 数据转换成了 js 中易使用的 object 类型。

上面已经提到了, js 对象是 json 在 js 语言中的载体,所以在 js 对象没有函数属性与非法值的时候,无需计较它到底是什么。 以下是两者相互转换的方法:

// 字符串转 json 
var json = JSON.parse('{ "a": 1}');
// 对象转字符串
var jsonStr = JSON.stringify({ b: 2 });

以上是个人理解,至于你信不信……

一笔荒芜 2018-05-31

刚学习程序,过来学习学习!!!!...

1144100656 2018-05-31

这个领域不太懂!! 还是坐等大佬吧...

1152696398 2018-05-31

好慢呀,空空如也,半天不来大神解决,大佬在哪啦

要回复,请先登录 或者注册