首页 > 技术文章 > json小实验

cjy1993 2014-08-06 16:52 原文

 

看了汤姆大叔的博客http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html 

博客原文:

我认为很多JavaScript开发人员都错误地把JavaScript对象字面量(Object Literals)称为JSON对象(JSON Objects),因为他的语法和JSON规范里描述的一样,但是该规范里也明确地说了JSON只是一个数据交换语言,只有我们将之用在string上下文的时候它才叫JSON。

// 这是JSON字符串
var foo = '{ "prop": "val" }';
 
// 这是对象字面量
var bar = { "prop": "val" };

 关于json的解读,我做一个小实验

var data = '{ "prop": "haha" }';  //如果写成{"prop":"haha"}会出错

var parsedData = JSON.parse( data );  //parsedData此时变成一个object
alert( parsedData.prop );    // haha

var returnJsonData = JSON.stringify( parsedData ); 
alert(returnJsonData);   //{"prop":"data"} 关于json的解读,我做一个小实验

这里的data是一个字符串,可以用JSON.parse解析

但我们一般用json发送数据和返回数据都是这样

var data = {
    "title": "xxx",
    "id" : "xx"    
};
$.post("xxx.json", data, callback);

而我们的json文件是这样
{
     "success":true    
}

返回后解析
 function callback(data){
      data = JSON.parse(data);
      alert(data.success); //true       
}

好像跨文件发送返回json和在一个script下写的json不太一样?这是看到这样一段评论

--------------------------------------

JSON就是一个有特殊规则的字符串,按照这个规则我们就可以把这个字符串解析成JS对象。

JSON对象就是Gecko 1.9.1引擎用C++实现的一个辅助对象。帮我们方便的将符合JSON字符串转化成JS对象,或者由JS对象转向同样符合JSON规定的字符串。当然你可以起名叫JSON HELPER之类的,只要浏览器是你自己实现的话。

JS用于调整浏览器的解析和渲染过程。浏览器的这个接口不一定用JS来实现,但是JS是最流行的一种对于HTML这个树形结构的操作手段的实现。

ECMA是一种规则,DOM也是一种规则,也可以说是接口。

------------------------------------------------

 

推荐阅读