@ZEAL Blog·厉
WWW Zeal Blog
We stand alone,
TOGETHER.

在C#中解析JavaScript代码

Posted by zeal on 2007-04-25 02:03 , 4314 characters |  + 0 - 0   English
转载请保留本行原始出处声明信息 : http://www.zeali.net/entry/495 MaDe1nZEAL
标签 ( JAVA/C++ , 开发/理论 ):  ,  , 
大部分的解释型脚本语言都提供 eval 方法来完成动态代码的解释执行, C# 却并不提供(向 Java 学习)。不过在 .NET Framework 类库里面提供的 Microsoft.JScript 命名空间倒是包含了支持使用JScript 语言编译和生成代码的类。

先上代码:

  该类需要你添加对程序集 Microsoft.JScript 的引用;如果把“current version with JScriptCodeProvider” 部分代码替换为“deprecated version with Vsa”部分代码,你还需要添加对程序集 Microsoft.Vsa 的引用。

  代码段末尾注释掉的部分是用 Microsoft.JScript.Vsa.VsaEngine 作为脚本引擎来完成 Evaluate 工作;但 VsaEngine (包括其所实现的 IVsaEngine 接口)在 .NET Framework 2.0 中已经被 deprecated ,所以如果你在新版本下编译的话,会得到如下的警告信息:“Microsoft.JScript.Vsa.VsaEngine”已过时:“Use of this type is not recommended because it is being deprecated in Visual Studio 2005; there will be no replacement for this feature. Please see the ICodeCompiler documentation for additional help.”

  这样的 Evaluate 方法一个显而易见的用途就是解析 JSON 数据。 JSON 的数据格式实际上是 JavaScript 对象定义语法的子集,所以使用这个 Framework 所提供的脚本引擎来解析得到的 JSON 格式的数据就比自己写一个 Parser 来的轻松得多。比如:

只需要得到一个 JSObject ,就可以通过对象的 key 名访问到每一个变量。

相关链接:Evaluating JavaScript code from C# , An Eval Function for C# using JScript.NET (JavaScript) , JS Parser

Last Modified on 2007-05-28 14:46
2 条评论:
- stc32008-01-23 18:55
很好很强大
但是不知道和其它一些序列化反序列化的类相比,效率如何
- hobo2008-08-19 17:36
这种处理方式我在实际应用中使用过,但发现很不稳定。
日志存档
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
本 Blog 原创内容
遵循以下授权:

Creative Commons
(创作共用) CC

署名-非商业性
-相同方式分享
ZEAL Blog 基于
Powered byPivot - 1.24.1: 'Arcee'
Pivot1.24.1
开发
系统部署于
Linode.com
Launched @
2005-04-27
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | About me | Back To Home | @ZEAL | zbird.com | 沪ICP备05024379号