bob体育官方平台
对json的理解

首先我们来看一下js中JSON格式的字符串

以前老师说了一句Java格式的json转换成js格式的json,我从那一直开始纠结,json既然是数据交换语言,格式都一样怎么还有语言之分的?纠结至今,发现,还是之前的学习资料有缺陷,没有详细讲解json,花了一个晚上和一个上午的时间整理了一些有关json的资料:

  JSON是什么?(JSON和JavaScript对象有什么区别?)如何把JS对象转化为JSON字符串,又如何把JSON字符串转化为JavaScript对象?

var JSONStr1 = "{"name" : "张三"}";

JSON  结构有两种结构

 

注意以下的写法不是js中JSON格式的字符串,它只是一个js的字符串。

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

  JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式bob体育app,, 这意味着在JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。JSON的规则很简单: 对象是一个无序的“名称/值”对集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“名称/值”对之间 使用“,”(逗号)分隔。

var JSONStr2 = "{'name' : '张三'}";

bob体育官方平台,1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

  它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号;

我们看JSON语法中对于字符串的定义:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符即一个单独的字符串。

2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

 

下面我们来看一下在js中怎么把JSON格式的字符串转换成一个JS对象。(

经过对象、数组2种结构就可以组合成复杂的数据结构了。

可以这么说:JSON对象就是一种严格的JS对象,但是JS对象不一定是JSON对象。(JS对象的键可以带单引号,双引号或者不带引号,JSON键也必须带双引号)。

var jsObj3 = eval;var jsObj4 = JSON.parse;

 为了方便地处理JSON数据,JSON提供了json.js包,下载地址:

     JSON与JS转换说的是JSON字符串与JSON对象(也就是JS对象)的转换。

推荐使用第二种方式具体原因请参看:

 

     JSON字符串通过eval可以转换为JSON对象(也就是一种JS对象)。

此外提一句使用这两种方式转换后的js对象,应该是“一个符合JSON数据格式的js对象”,也就是说它的属性是带着引号的,这只是我的一种猜测,因为如果JSON格式的字符串如下表示:

    在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

     JSON字符串将JSON对象装成字符串:     '{"width":100,"height":200,"name":"rose"}'

var JSONStr1 = "{"f[name]" : "张三"}";

 

 

那么转换后的JS对象的属性必定要加上引号,因为js对象的属性不加引号只能使用字母,数字,下划线和$符号表示,使用其它符号属性就要加上引号了,所以说JS对象字面量表示法中属性加上引号是不会错的。另外如果JSON格式的字符串如上所示,那么转换后的js对象对f[name]取值就不能使用 jsObj4.f[name] 要用 jsObj4['f[name]'] ,因为有特殊字符,这点要注意了。对于我的猜测,读者要有异议,可以提给我。

    JSON字符串:

JSON只是一种数据格式(或者叫数据形式);

我们再来看看在js中js对象与JSON格式字符串的转换。下面我准备了几组js对象加以说明:

 

 

 // 这是一个js对象 var jsObj1 = { name : "张三" } //这是一个内部带有方法js对象。 var jsObj2 = { name : "张三", func : function; } } //这是一个符合JSON数据格式的js对象 var jsonObj = { "name" : "张三", "age" : 10, "remark" : {"high" :170,"address" : "beijingshi"} } // js数组对象 var jsArray = [ {name : "张三"}, {"age" : 10} ] function testJson(){ var JSONstr1 = JSON.stringify; var JSONstr2 = JSON.stringify; var JSONstr3 = JSON.stringify; var JSONstr4 = JSON.stringify; alert; alert; alert; alert; }</pre><p>其中 的执行结果说明,JSON解析器的stringify()函数对于js对象是fou符合JSON格式是不加限定,都可以把js对象转换成JSON格式字符串。</p><p>的执行结果说明,js对象中如果没有JSON表示的值将会被排除。</p><p>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。</p>

    var str1 = '{ "name": "cxh", "sex": "man" }';

<script>
var obj2={};//这只是JS对象
var obj3={width:100,height:200};/*这跟JSON就更不沾边了,只是JS的 对象 */
var obj4={'width':100,'height':200};/*这跟JSON就更不沾边了,只是JS的对象 */
var obj5={"width":100,"height":200,"name":"rose"}; /*我们可以把这个称做:JSON格式的JavaScript对象 */
var str1='{"width":100,"height":200,"name":"rose"}';/*我们可以把这个称做:JSON格式的字符串 */
var a=[
 {"width":100,"height":200,"name":"rose"},
 {"width":100,"height":200,"name":"rose"},
 {"width":100,"height":200,"name":"rose"},
 ];
 /*这个叫JSON格式的数组,是JSON的稍复杂一点的形式 */
var str2='['+
 '{"width":100,"height":200,"name":"rose"},'+
 '{"width":100,"height":200,"name":"rose"},'+
 '{"width":100,"height":200,"name":"rose"},'+
 ']' ;
 /* 这个叫稍复杂一点的JSON格式的字符串 */
</script>

 

 

    JSON对象:

 

 

 

    var str2 = { "name": "cxh", "sex": "man" };

JSON和JS对象区别对比表

 

bob体育官方平台 1

    一、JSON字符串转换为JSON对象

  总而言之你可以理解为JSON是JS下的一种数据格式,他从属于JS,并且在处理JSON数据时可直接使用JS内置API 

 

 

    要运用上面的str1,必须运用下面的要领先转化为JSON对象:

 

 

JSON实例

    //由JSON字符串转换为JSON对象

{
"sites": [
{ "name":"菜鸟教程" , "url":"www.runoob.com" }, 
{ "name":"google" , "url":"www.google.com" }, 
{ "name":"微博" , "url":"www.weibo.com" }
]
}
返回顶部