eval函数处理JSON数据需要加括号

在将服务器端构建好的JSON数据转化为可用的JavaScript对象时常常使用eval函数。如下:

var dataJson = eval(‘(‘ + data + ‘)‘);

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

alert(eval("{}");  // return undefined
alert(eval("({})");// return object[Object]
时间: 2024-10-13 10:22:35

eval函数处理JSON数据需要加括号的相关文章

eval函数解析json数据时加上圆括号

如果最外层是一个{}的话,需要再增加一对圆括号, 不加圆括号会报:错误Uncaught SyntaxError: Unexpected token : 其它类似: 在函数中返回箭头函数对象时,也要加一个()比如 export default connect(()=>({"age":111}))(Demo); 主要原因是,不加圆括号,会解释为语句块. 原文地址:https://www.cnblogs.com/zhaogaojian/p/12332465.html

使用异步任务加载网络上json数据并加载到ListView中

Android中使用网络访问来加载网上的内容,并将其解析出来加载到控件中,是一种很常见的操作.但是Android的UI线程(也就是主线程)中是不允许进行耗时操作的,因为耗时操作会阻塞主线程,影响用户体验.而访问网络同样是一个耗时操作,并且Android3.0以后是不允许在主线程中访问网络的,所以我们这里用Android封装好的AsyncTask类来完成这些耗时操作. 项目的目录结构如下: AsyncTask是一个抽象类,实际上他是封装好的一个类,底层也是用handler和thread来实现的,我

使用javascript的eval函数解析json字符串,提示“not avalible”怎么办?

按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对": var jsonString = '{ "firstName": "Brett" } '; 如果这样的简单json字符串使用eval函数是不能解析(在chrome浏览器37.0中测试)的 var a = eval(jsonString); 执行这个语句是系统会提示:“not avalible”; 这样的问题怎么办呢,我们实际中确实需要传输多个参数的值. 解决的办法是将最简单的

eval函数解析json表达式

Eval函数解析 *********************** ps:JSON(JavaScript Object Notation,JavaScript对象表示法)是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量. json只支持三种的数据类型: 简单值,数组,字符串,布尔,或者null,但不支持undifine 基本的格式: 对象:键值 "name":"Yumay",|| "age": 18, ||"sex":&

PHP自定义函数格式化json数据怎么调用?

<?php/*** Formats a JSON string for pretty printing** @param string $json The JSON to make pretty* @param bool $html Insert nonbreaking spaces and <br />s for tabs and linebreaks* @return string The prettified output*/$arr = array("ret"

小发现: C/C++函数形参名可加括号

有一次我发现下面这段代码无法通过编译. #include <iostream> using namespace std; struct A { A(int n) {} }; struct B { B(A a) {} int foo() const { return 1; } }; int main() { int n = 1; B b(A(n)); cout << b.foo() << endl; } 错误信息如下. 错误信息显示b是一个非类类型对象.但是我看了半天都不

AJAX向服务器发送请求并返回json数据

这里想实现的功能大概是这样:类似注册时,用户名已经被注册了的情况.当用户失去焦点的时候利用AJAX发送请求到服务器端,服务器端进行数据库查询,如果有相同的用户名则页面提示用户名已被注册了,不能用,否则就通过注册. 这里用的是Jquery AJAX以及SSH框架,下面是我的实现步骤: 先引入struts-json的jar包 1.注册页面中添加JS方法调用 <span id="tip" style="color:red"></span> <

asp.net中webservice与android的json数据交互方式设置

一 .服务器端设置 1.修改web.config 在web.config里面的的system.Web节点添加 <webServices> <protocols> <add name= "HttpPost"/> <add name= "HttpGet"/> </protocols> </webServices> 2.修改XX.asmx.cs [WebService(Namespace = &quo

JSON1:JSON数据的操作

JSON是一个非常流行的,用于数据交换的数据格式,主要用于Web和移动应用程序中.JSON 使用键/值对(Key:Value pair)存储数据,并且表示嵌套键值对和数组两种复杂数据类型,仅仅使用逗号(引用Key)和中括号(引用数组元素),就能路由到指定的属性或成员,使用简单,功能强大.在SQL Server 2016版本中支持JSON格式,使用Unicode字符类型表示JSON数据,并能对JSON数据进行验证,查询和修改.推荐一款JSON验证和格式化的工具:json formatter. 一,