使用eval()将json字符串转换为对象要多加一个小括号: 
关于eval()函数的具体用法这里就不多介绍了,具体可以参阅javascript的eval()方法一章节,下面就介绍一下为什么使用eval()函数将json格式字符串转换为对象的时候,需要多嵌套一层小括号,下面就介绍一下它的原因,希望能够对需要的朋友带来帮助。 
先看一段转换代码:

var jsonStr='{"webName":"蚂蚁部落","webAddress":"青岛市南区","age":2}';
var jsonObject=eval("("+jsonStr+")");
console.log(jsonObject.webName);

以上代码可以将一个json格式字符串转换成对象,下面就介绍一下为何要嵌套一个效果括号。 
如果不加小括号的话,字符串将被eval()函数处理为:

{"webName":"蚂蚁部落","webAddress":"青岛市南区","age":2}

在js中,如果一段代码既可以认为是表达式也可以认为是语句,那么语句优先,所以上面就是一个语句,那么”webName”:”蚂蚁部落”就是标签语句,但是逗号运算符后面也是一个标签语句就不对了,因为运算符后面要跟着表达式才可以。如果外面套上一层小括号,那么代码就会被eval()处理成:

({"webName":"蚂蚁部落","webAddress":"青岛市南区","age":2})

因为小括号之中必须是表达式,那么里面的内容就成了一个对象直接量表达式,也就是转换成功了。

为什么使用eval()将json字符串转换为对象要多加一个小括号的更多相关文章

  1. Java中Json字符串转换为对象的方法(多层List集合)

    借鉴自:http://www.jb51.net/article/91142.htm 在将json字符串转换成对象flightInfo时,当flightInfo对象中有List<flightCla ...

  2. eval()将json 字符串转换为数组

    json ={ GW:[{id:"655",mc:"董事"},{id:"656",mc:"书记"},{id:" ...

  3. JS代码把JSON字符串转换为对象,计算对象的长度并把它转换为数字类型,把转换的值相加减

    Number(JSON.parse(rowObject.RenewalProperty).length)-1

  4. JSON字符串和对象之间的转换

    JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集.正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中. eval函数 ...

  5. JS的全局函数eval解析JSON字符串

    JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...

  6. 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...

  7. JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  8. js 将json字符串转换为json对象的方法解析

    推荐: var obj = eval('(' + str + ')'); var last=JSON.stringify(obj); //将JSON对象转化为string字符 例如: JSON字符串: ...

  9. javaScript 将json字符串转换为json对象的方法解析

    JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...

随机推荐

  1. 5种漂亮的纯CSS3动画按钮特效

    这次我们要来分享一款很不错的CSS3按钮动画,这款CSS3按钮一共有5种动画方式,每一种都是鼠标滑过动画形式,虽然这些动画按钮不是十分华丽,但是小编觉得不像其他按钮那样很难扩展,我们可以修改CSS代码 ...

  2. phpexcel导出乱码

    在输出到浏览器时,要在head前加ob_end_clean();参考此文, ob_end_clean(); header('Content-Type: application/vnd.ms-excel ...

  3. plsql 只能识别32位的oracle解决办法

    http://www.cnblogs.com/ymj126/p/3712727.html#undefined

  4. 【C#】允许泛型方法<T>返回空值Null

    在设计一个返回类型为T的泛型方法时,有时希望能返回空Null,然后会报错: 根据提示,将返回值由Null改为default(T)即可. default(T)表示返回当前T类型的默认值,如果T为int则 ...

  5. [uboot]What is MLO file?

    转自:https://coherentmusings.wordpress.com/2012/09/05/what-is-mlo-file/ I have had the Beagle-xM for a ...

  6. Python3分别将list、numpy数组内容写入txt文件中

    1.python保存numpy数据: numpy.savetxt("result.txt", numpy_data) 2.保存list数据: file=open('data.txt ...

  7. 分布式系统技术系列--租约(lease) (转载)

    租约(lease)在英文中的含义是“租期”.“承诺”,在分布式中一般描述如下: Lease 是由授权者授予的在一段时间内的承诺. 授权者一旦发出 lease,则无论接受方是否收到,也无论后续接收方处于 ...

  8. Java GUI画圆。

    package ydj; import java.awt.*; import javax.swing.*; public class huayuan extends JFrame { public h ...

  9. addClass和removeClass函数

    function addClass1(element,value){ if(!element.className){ element.className = value; }else{ newClas ...

  10. 最大割(Maximum cut)

    问题描述:把图中点分为两部分V1和V2,使得V1和V2之间的连边值最大.