Json 即为 Douglas Crockford 引入的数据传输格式,对于如何将这种传输格式转换成 javascript可以引用的格式,Crockford显然比一般人更谨慎。
1.直接eval转换
由于json是javascript的语法子集,而javascript又具有动态特性,则可利用eval直接动态解析即可。
注意要加括号来得到返回对象。速度最快
return eval("("+re+")");
2.检验+eval
考虑到 eval所带来的直接执行代码的不安全性, Crockford 加了一步验证,首先确保返回格式是json格式,才eval
if( re 不包含 new = 等执行代码操作)
return eval("("+re+")");
详见:json2.js
3.Json parser
后来 crockford 进一步加强了返回数据 的安全性检查,产生了一个javascript实现的复杂json解析器,从返回的字符串中解析出javascript对象数据,不再利用eval特性 ,在 javascript :the good parts
实现了一个直接存返回数据字符串中逐步分析字符得到一个javascript对象的json解析器。但是明显的缺点就是这种方法效率肯定会有所影响,所以没有被加入json2 的 parser中。
总结:
综合来说,从效率以及安全性来说 方法2,即json2.js 的做法是比较好的,也正是现在普遍推荐的方法。
ps:
eval 与 new Function的不同
常常疑惑 eval("(function(x){})") 与 new Function("x","") 的不同,专家有的说不建议用 new function
。那么到底有什么区别。
可以看一个例子:
eval:
function y(){
var yiminghe=1;
return eval("(function(){return yiminghe;})");
}
alert(y()());
new Function
function y(){
var yiminghe=1;
return new Function("return yiminghe;");
}
alert(y()());
可见:eval 和自己写函数没有什么区别,但是 new Function 则丧失了闭包的特性,但是会省去作用域链引入,变量查找的开销,对于特别注重效率以及不需要闭包的地方还是可以采用的。
分享到:
相关推荐
总结,Android中的JSON解析包括本地和在线两种方式,都可以使用Android SDK内置的`org.json`包。在实际开发中,根据项目需求,可以选择最合适的解析策略,并确保正确处理各种异常情况,提升用户体验。
Unity引擎是一款广泛应用于...总结来说,Unity在WebGL平台使用json解析.dll涉及到对JSON数据的处理,DLL的打包和WebGL的兼容性问题。理解这些知识点可以帮助开发者有效地在Unity WebGl项目中集成和使用JSON解析功能。
总结,Gson是Java开发中处理JSON数据的强大工具,它提供了简洁的API,使得JSON解析和反解析变得轻松高效。无论是在本地文件操作还是网络数据交互中,Gson都能发挥重要作用。理解并熟练掌握Gson的使用,对于提升Java...
### Kettle与JSON解析概述 #### 1. **Kettle简介** - Kettle(Pentaho Data Integration,简称PDI)是一款开源的数据集成工具,广泛用于ETL(Extract-Transform-Load)任务。 - Kettle支持多种数据源,包括关系型...
如果你能够访问IIS服务器,可以安装ASP.NET ISAPI Filter,这样ASP页面就能利用.NET Framework的功能,包括JSON解析。 总结: 在ASP中解析JSON,你可以选择使用JavaScript库在客户端处理,或者使用VBScript自定义...
本篇将围绕“Json解析辅助”这一主题,详细讲解JSON的基本概念、结构、解析方法以及相关辅助工具的应用。 1. JSON的基本结构: JSON基于JavaScript的一个子集,主要由对象和数组两种基本结构构成。对象是键值对的...
### JSON 常用方法与解析 #### 一、JSON 概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在 Web 应用程序中,JSON...
本篇将介绍一种简单的JSON解析方法,主要涉及`JsonUtil`、`BeanUtil`和`AjaxResponse`三个类。 首先,我们来看`JsonUtil`类,这是一个基础的JSON操作工具类,通常包括将Java对象转换为JSON字符串以及将JSON字符串反...
总结而言,FJSON是一款专为.NET环境设计的高效、轻量级的JSON解析库,它的紧凑代码和可控解析过程为开发者提供了强大的工具,尤其是在处理大量JSON数据时,能有效提高程序的运行效率。无论是初学者还是经验丰富的...
在C#中,当你面对未知结构的JSON数据,即不能预先定义强类型对象时,可以使用`Dictionary, object>`作为载体,将JSON解析为键值对的形式。 以下是使用Json.NET库解析JSON的基本步骤: 1. 引入库:确保项目引用了...
Retrofit是另一种流行的Android网络库,它允许更优雅地处理网络请求和响应,包括JSON解析。添加依赖: ```groovy implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation '...
总结起来,JSON解析在Java开发中起着至关重要的作用,不同的解析库提供了多样化的解决方案,以满足不同项目的需求。无论选择哪个库,理解和熟练掌握其使用方法都将有助于提升开发效率和代码质量。
本文主要介绍两种常见的Linux下JSON解析工具:`jsonfilter` 和 `jq`。 #### jsonfilter 工具详解 `jsonfilter` 是一款由OpenWRT自带的工具,其体积小且简单易用,能够满足基本的需求。它基于`json-c`库实现,因此...
描述中提到的"json解析的第三方jar包"很可能指的是如Gson、Jackson、org.json或Fastjson等流行的JSON解析库。这些库提供了一系列API,使得开发者可以方便地将JSON字符串转换为Java对象,或者将Java对象转换为JSON...
总结一下,这个练习涵盖了Android应用中JSON解析的基本流程,包括读取JSON数据、解析数据以及将解析结果展示到用户界面。通过实践这样的练习,开发者可以深入理解和掌握JSON在Android开发中的应用。
本文将深入探讨一个纯C语言实现的JSON解析器——`json-c`,它是如何工作的以及如何在不同平台上进行应用。 `json-c`是一个开源项目,它提供了C语言接口来处理JSON数据。这个库不仅支持JSON的解析和生成,还提供了...
总结来说,"IOS json解析"涉及如何在iOS应用中接收、解析和操作JSON数据。苹果的`NSJSONSerialization`和`JSONSerialization`提供了基础的解析功能,而第三方库则提供了更高级和灵活的解决方案。在开发过程中,理解...
LitJson是C#编程语言中一个轻量...总结来说,LitJson是一个简单易用的C# Json解析工具,适用于对性能要求较高或对功能需求不那么复杂的情况。在开发过程中,理解并熟练掌握它的使用,能够帮助你更有效地处理Json数据。
总结来说,这个“json解析器”是一个用于JavaScript环境的工具,它能够高效地解析JSON数据并将其转换为HTML元素,适用于AJAX应用中的数据展示。开发者可以通过使用这个解析器,更便捷地处理服务器返回的JSON数据,...
在.NET开发环境中,C#是一种...总结来说,C#中的JSON解析主要依赖于像JSON.NET这样的库,通过序列化和反序列化操作,实现JSON数据与C#对象之间的转换。理解和熟练使用这些功能对于任何.NET开发者来说都是至关重要的。