仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1243|回复: 10
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之当json.js碰见dynamic.net烂尾篇仓酷云

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。因为比来较忙,上一篇的坑估量要渐渐填了。感到写文章先容要比写程序还累啊。先看看测试程序,可以懂得api撑持哪些功效:

  1. staticvoidMain(string[]args){//wrapper对象dynamicdata=DJson.Wrap(new{name="Jane",male=false,age=24,dob=DateTime.Now,friend=new{name="Jesse",male=true,age=32,dob=DateTime.Now},mobile=newobject[]{new[]{86},13888888888},});Console.WriteLine(data.Stringfy());//数组data=newDJsonArray();data[0]=new{name="小朋盂1号"};data[1]=new{name="小朋盂2号"};data[2]=new{name="小朋盂3号"};Console.WriteLine(data.Stringfy());//反序列化varjson=data.Stringfy();dynamicobj=DJson.Parse(json);//修正反序列化后的数据obj[1]=new{name="mike",age=21,dob=DateTime.Now};Console.WriteLine(obj.Stringfy());//实践使用,将twitterstatues反序列化json=System.IO.File.ReadAllText("e:/twitter.js");dynamicstatuses=DJson.Parse(json);for(inti=0;i<statuses.Length;i++){varstatus=statuses[i];Console.WriteLine("id:{0}nname:{1}nfrom:{2}ntext:{3}n",status.user.id,status.user.name,status.user.location,status.text);}Console.ReadKey();}
复制代码


twitter文件请在这里下载
先放上代码,实在很复杂,今后再渐渐剖析

  1. publicclassDJson:DynamicObject{protectedDictionary<string,object>_expando=newDictionary<string,object>();publicoverridestringToString(){returnthis.Stringify();}publicIEnumerable<string>Keys{get{return_expando.Keys;}}publicobjectthis[stringkey]{get{return_expando[key];}set{_expando[key]=value;}}publicDJson(){}publicstaticDJsonWrap(objectobj){if(!(objisstring)&&(objisIEnumerable)&&!(objisDictionary<string,object>)){vararray=newDJsonArray();inti=0;foreach(objectvinobjasIEnumerable)array[i++]=DJson.Wrap(v);returnarray;}else{vardj=newDJson();if(objisDictionary<string,object>){foreach(varkvinobjasDictionary<string,object>){if(kv.Value==null)dj[kv.Key]=(object)null;elseif(IsPrimitive(kv.Value.GetType()))dj[kv.Key]=kv.Value;elsedj[kv.Key]=DJson.Wrap(kv.Value);}}else{vart=obj.GetType();if(IsPrimitive(t))thrownewArgumentException();foreach(varpint.GetProperties()){varv=p.GetValue(obj,null);if(IsPrimitive(p.PropertyType))dj[p.Name]=v;elsedj[p.Name]=DJson.Wrap(v);}}returndj;}}publicstaticDJsonParse(stringjson){varobj=(newJavaScriptSerializer()).DeserializeObject(json);returnDJson.Wrap(obj);}publicstringStringify(){varserializer=newJavaScriptSerializer();serializer.RegisterConverters(newJavaScriptConverter[]{newDJsonConverter()});if(thisisDJsonArray)returnserializer.Serialize((thisasDJsonArray).ToArray());returnserializer.Serialize(this);}publicoverrideboolTryGetMember(GetMemberBinderbinder,outobjectresult){if(_expando.TryGetValue(binder.Name,outresult))returntrue;returnfalse;}publicoverrideboolTrySetMember(SetMemberBinderbinder,objectvalue){if(!(valueisstring)&&(valueisIEnumerable))_expando[binder.Name]=newDJsonArray(valueasIEnumerable);else_expando[binder.Name]=value;returntrue;}internalstaticboolIsPrimitive(Typetype){returntype.FullName.StartsWith("System.")&&!type.FullName.StartsWith("System.Collection");}}publicclassDJsonArray:DJson{Dictionary<int,object>_array=newDictionary<int,object>();publicobjectthis[intindex]{get{return_array[index];}set{_array[index]=value;}}publicintLength{get{return_array.Keys.Count;}}publicDJsonArray(){}publicDJsonArray(IEnumerablearray){inti=0;foreach(varobjinarray)this[i++]=obj;}publicobject[]ToArray(){return_array.Values.ToArray();}publicDJsonToObject(){vardj=newDJson();foreach(stringkeyin_expando.Keys)dj[key]=_expando[key];foreach(intkeyin_array.Keys)dj[key.ToString()]=_array[key];returndj;}}internalclassDJsonConverter:JavaScriptConverter{publicoverrideIDictionary<string,object>Serialize(objectobj,JavaScriptSerializerserializer){vardj=(DJson)obj;varresult=newDictionary<string,object>();foreach(stringkeyindj.Keys){if(dj[key]isDJsonArray)result[key]=(dj[key]asDJsonArray).ToArray();elseresult[key]=dj[key];}returnresult;}publicoverrideIEnumerable<Type>SupportedTypes{get{returnnewList<Type>(newType[]{typeof(DJson),typeof(DJsonArray)});}}publicoverrideobjectDeserialize(IDictionary<string,object>dictionary,Typetype,JavaScriptSerializerserializer){thrownewNotImplementedException();}}
复制代码


Newton的json库比来仿佛做了不异的事变,入手下手撑持dynamic了
http://james.newtonking.com/archive/2011/01/03/json-net-4-0-release-1-net-4-and-windows-phone-support.aspx
语言是不是不是最重要的?
再见西城 该用户已被删除
沙发
发表于 2015-1-18 16:10:57 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-22 09:30:48 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
蒙在股里 该用户已被删除
地板
发表于 2015-1-31 05:48:41 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
海妖 该用户已被删除
5#
发表于 2015-2-6 17:31:55 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
再现理想 该用户已被删除
6#
发表于 2015-2-12 19:49:04 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
飘灵儿 该用户已被删除
7#
发表于 2015-2-28 14:18:58 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
透明 该用户已被删除
8#
发表于 2015-3-8 14:54:01 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
莫相离 该用户已被删除
9#
发表于 2015-3-11 05:33:13 | 只看该作者
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-17 21:10:41 | 只看该作者
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
若相依 该用户已被删除
11#
发表于 2015-3-25 02:46:02 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表