关于json,你可能不知道的东西.

JSON: JavaScript Object Notation (javaScript 对象表示法).

JSON 是一种名称/值对的结构。

一个对象一{左括号开始,以}右括号结束。没哥名称后跟一个:冒号;'名称/值' 对之间用','逗号隔开。(最后一个键值对后不用分号

这里的 名称 要用 "(分号) 引起来,不然可能报错。(可能哦)

你可以用下面的方式去表示:

{"name":"helloyangzhi"}

当然你可以多个一起串联起来:

{"name":"helloyangzhi","email":"helloayngzhi@gmail.com","age":"21"}
数组是( value)的有序集合,一个数组以 "[" 左中括号开始,"]" 右中括号结束,值之间用“ ,”逗号隔开。
当然,如果你要表示数组:

{ "people": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

]}

这里表示一个people变量,后面包含三条记录。

当然还可以表示多个变量:

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },

{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

],
"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

]}

那么在实际开发中,你可以将一个json对象赋值给一个js对象.


var json = {
      "name":"yangzhi",
      "email":"helloyangzhi@gmail.com"
}

 这样能够在方法中传递。


在用jquery做异步传输时,如果不不指定返回对象类型,或者以字符串的方式返回。

那么就需要将字符串转换成json对象。

如下:

var obj = eval("(" + data + ")");

这样 obj 就转换成obj对象。

为什么要 eval这里要添加 “("("+data+")");//”呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]

对于这种写法,在JS中,可以到处看到。

如: (function()) {}();  做闭包操作时等。

当然,如果你在做异步请求是指定返回为json对象。那么就不需要用eval()方法了,可以直接使用。

如:

$.post(url,{},function(){},"json");

那么在这里就指定了返回数据类型为json对象。

注:这里需要注意使用eval() 方式,是动态的去执行字符串,那么也可能是js脚本,这样就可能存在一定的系统安全问题。

所以可以采用一些规避了eval()的第三方脚本库。

第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析

var json='{"name":"CJ","age":18}';


data =(new Function("","return "+json))();


转载于:https://www.cnblogs.com/yangzhi/archive/2013/02/01/3576567.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值