ASP.NET中JSON的序列化和反序列化

JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式。在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间、集合、字典的处理。     一、JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。 JSON是“名值对”的集合。结构由大括号'{}’,中括号'[]’,逗号’,’,冒号’:’,双引号’“”’组成,包含的数据类型有Object,Number,Boolean,String,Array, NULL等。 JSON具有以下的形式: 对象(Object)是一个无序的“名值对”集合,一个对象以”{”开始,”}”结束。每个“名”后跟着一个”:”,多个“名值对”由逗号分隔。如:

数组(Array)是值的有序集合,一个数组以“[”开始,以“]”结束,值之间使用“,”分隔。如:

字符串(String)是由双引号包围的任意数量的Unicode字符的集合,使用反斜线转义。       二、对JSON数据进行序列化和反序列化 可以使用DataContractJsonSerializer类将类型实例序列化为JSON字符串,并将JSON字符串反序列化为类型实例。DataContractJsonSerializer在System.Runtime.Serialization.Json命名空间下,.NET Framework 3.5包含在System.ServiceModel.Web.dll中,需要添加对其的引用;.NET Framework 4在System.Runtime.Serialization中。 利用DataContractJsonSerializer序列化和反序列化的代码:

    序列化Demo: 简单对象Person:

序列化为JSON字符串:

输出结果:

反序列化Demo:

运行结果: ASP.NET中的JSON序列化和反序列化还可以使用JavaScriptSerializer,在System.Web.Script.Serializatioin命名空间下,需引用System.Web.Extensions.dll.也可以使用JSON.NET. […]

龙生   06 Nov 2015
View Details

字符串和字节数组转换

using System; using System.Collections.Generic; using System.Text; namespace NET.MST.Fourth.StringByte { class StringByte { static void Main(string[] args) { String s = "我是字符串,I am string"; //字节数组转换到字符串 Byte[] utf8 = StringToByte(s, Encoding.UTF8); Byte[] gb2312 = StringToByte(s, Encoding.GetEncoding("GB2312")); Byte[] unicode = StringToByte(s, Encoding.Unicode); Console.WriteLine(utf8.Length); Console.WriteLine(gb2312.Length); Console.WriteLine(unicode.Length); //转换回字符串 Console.WriteLine(ByteToString(utf8, Encoding.UTF8)); Console.WriteLine(ByteToString(gb2312, Encoding.GetEncoding("GB2312"))); Console.WriteLine(ByteToString(unicode, Encoding.Unicode)); Console.Read(); } static Byte[] StringToByte(String s, Encoding encoding) { return encoding.GetBytes(s); } static String ByteToString(Byte[] b, Encoding encoding) { return encoding.GetString(b); } } } from:http://www.cnblogs.com/brainmao/archive/2011/05/29/2062385.html

龙生   06 Nov 2015
View Details

在ASP.NET中下载Text文件,而不是在浏览器中打开它

介绍 让用户从我们的网站上下载各种类型的文件是一个比较常用的功能,这篇文章就是告诉您如何创建一个.txt文件并让用户下载。 使用代码 虽然在示例里,我先创建了一个text文件,但是你不一定也要这么做,因为这个文件可能在你的网站里已经存在了。如果是这样的话,你只需要使用FileStream去读取它就可以了。 首先,我们将这个text文件读取到一个byte数组中,然后使用Response对象将文件写到客户端就可以了。 Response.AddHeader("Content-disposition", "attachment; filename=" + sGenName); Response.ContentType = "application/octet-stream"; Response.BinaryWrite(btFile); Response.End(); 这段代码是完成这个功能的主要代码。第一句在输出中添加了一个Header,告诉浏览器我们发送给它的是一个附件类型的文件。然后我们设置输出的ContentType是"application/octet-stream",即告诉浏览器要下载这个文件,而不是在浏览器中显示它。 下面是一个MIME类型的列表。 ".asf" = "video/x-ms-asf" ".avi" = "video/avi" ".doc" = "application/msword" ".zip" = "application/zip" ".xls" = "application/vnd.ms-excel" ".gif" = "image/gif" ".jpg"= "image/jpeg" ".wav" = "audio/wav" ".mp3" = "audio/mpeg3" ".mpg" "mpeg" = "video/mpeg" ".rtf" = "application/rtf" ".htm", "html" = "text/html" ".asp" = "text/asp" '所有其它的文件 = "application/octet-stream" 下面是一个完整的如何下载文本文件的示例代码 C# protected void Button1_Click(object sender, EventArgs e) { string sFileName = System.IO.Path.GetRandomFileName(); string sGenName = "Friendly.txt"; //YOu could omit these lines here as you may not want […]

龙生   06 Nov 2015
View Details

程序员都会的 35 个 jQuery 小技巧

收集的35个 jQuery 小技巧/代码片段,可以帮你快速开发. 1. 禁止右键点击 1 2 3 4 5 $(document).ready(function(){     $(document).bind("contextmenu",function(e){             return false;     }); }); 2. 隐藏搜索文本框文字 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Hide when clicked in the search field, the value.(example can be found below in the comment fields) $(document).ready(function() { $("input.text1").val("Enter your search text here");    textFill($('input.text1')); });      function textFill(input){ //input focus text function      var originalvalue = input.val();      input.focus( function(){                if( $.trim(input.val()) == originalvalue ){ input.val("); }      });      input.blur( function(){                if( $.trim(input.val()) == " ){ input.val(originalvalue); }      }); } 3. 在新窗口中打开链接 1 2 3 4 5 6 7 8 9 10 11 XHTML 1.0 Strict doesn’t allow this attribute in the code, so use this to keep the code valid. $(document).ready(function() {    //Example 1: Every link will open in a new window    $('a[href^="http://"]').attr("target", "_blank");     //Example 2: Links with the rel="external" attribute will only open in a new window    $('a[@rel$=’external']').click(function(){          this.target = "_blank";    }); });// how to use <a href="http://www.opensourcehunter.com" rel=external>open link</a> 4. 检测浏览器 注: 在版本jQuery 1.4中,$.support 替换掉了$.browser 变量 1 2 3 4 5 6 7 8 9 10 11 12 […]

龙生   06 Nov 2015
View Details

处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”

IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法 IIS上部署MVC网站,打开后500错误:处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler” 解决方法如下: 以管理员运行下面的命令注册: 32位机器: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 64位机器: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

龙生   03 Nov 2015
View Details

css设置各种中文字体如雅黑、黑体、宋体、楷体等等

代码如下: .selector{ font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STHeiti,MingLiu } 说明: 加上中文名“微软雅黑”是为了兼容opera。 MicrosoftJhengHei为微软正黑体,STHeiti为华文黑体,MingLiu记得11px下的中文有着不凡的效果。 在css中推荐使用中文字体的英文表示法,以下附常见中文字体的英文名: Mac OS的一些: 华文细黑:STHeiti Light [STXihei] 华文黑体:STHeiti 华文楷体:STKaiti 华文宋体:STSong 华文仿宋:STFangsong 儷黑 Pro:LiHei Pro Medium 儷宋 Pro:LiSong Pro Light 標楷體:BiauKai 蘋果儷中黑:Apple LiGothic Medium 蘋果儷細宋:Apple LiSung Light Windows的一些: 新細明體:PMingLiU 細明體:MingLiU 標楷體:DFKai-SB 黑体:SimHei 宋体:SimSun 新宋体:NSimSun 仿宋:FangSong 楷体:KaiTi 仿宋_GB2312:FangSong_GB2312 楷体_GB2312:KaiTi_GB2312 微軟正黑體:Microsoft JhengHei 微软雅黑体:Microsoft YaHei 装Office会生出来的一些: 隶书:LiSu 幼圆:YouYuan 华文细黑:STXihei 华文楷体:STKaiti 华文宋体:STSong 华文中宋:STZhongsong 华文仿宋:STFangsong 方正舒体:FZShuTi 方正姚体:FZYaoti 华文彩云:STCaiyun 华文琥珀:STHupo 华文隶书:STLiti 华文行楷:STXingkai 华文新魏:STXinwei 注:如果字体的名称是一个单词的,不需要加引号,否则在ie6,7里面会失效,并且后面的样式也会不生效! from:http://www.jb51.net/css/163448.html

龙生   03 Nov 2015
View Details

VS2012 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService

最近新换了系统还真是问题多多呀!! 系统更新补丁后打开 VS2012 ,新建C#项目的时候出现这个问题   VS2012 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDoc mentFactoryService   我勒个去,相当郁闷呀,赶紧百度,找到了下面两个解决方案: 方案一: 删除 kb2805222 .net4.5 framework 更新程序(控制面板->Windows Update->) 但是我这里没有这个更新 于是我采用第二套方案   方案二: 更新 (KB2781514)   下载网址:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=36020   OK了!哈哈~~~~   from:http://www.cnblogs.com/csulennon/p/3709019.html

龙生   29 Oct 2015
View Details

tomcat添加admin,manager账户

打开 D:\Tomcat8027\conf\tomcat-users.xml 在tomcat-users节点里添加: <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="admin-gui"/> <role rolename="manager-gui"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> <user username="admin" password="admin" roles="admin-gui,manager-gui"/> 重启tomcat,就可以用admin登录了。PS:其他用户也可以不要。

龙生   25 Oct 2015
View Details

关于redis、memcached、mongoDB 的对比

从以下几个维度,对redis、memcached、mongoDB 做了对比,欢迎拍砖 1、性能 都比较高,性能对我们来说应该都不是瓶颈 总体来讲,TPS方面redis和memcached差不多,要大于mongodb 2、操作的便利性       memcached数据结构单一       redis丰富一些,数据操作方面,redis更好一些,较少的网络IO次数        mongodb支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富 3、内存空间的大小和数据量的大小        redis在2.0版本后增加了自己的VM特性,突破物理内存的限制;可以对key value设置过期时间(类似memcache)        memcached可以修改最大可用内存,采用LRU算法        mongoDB适合大数据量的存储,依赖操作系统VM做内存管理,吃内存也比较厉害,服务不要和别的服务在一起 4、可用性(单点问题) 对于单点问题,              redis,依赖客户端来实现分布式读写;主从复制时,每次从节点重新连接主节点都要依赖整个快照,无增量复制,因性能和效率问题, 所以单点问题比较复杂;不支持自动sharding,需要依赖程序设定一致hash 机制。 一种替代方案是,不用redis本身的复制机制,采用自己做主动复制(多份存储),或者改成增量复制的方式(需要自己实现),一致性问题和性能的权衡              Memcached本身没有数据冗余机制,也没必要;对于故障预防,采用依赖成熟的hash或者环状的算法,解决单点故障引起的抖动问题。              mongoDB支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制。 5、可靠性(持久化) 对于数据持久化和数据恢复,          redis支持(快照、AOF):依赖快照进行持久化,aof增强了可靠性的同时,对性能有所影响           memcached不支持,通常用在做缓存,提升性能;           MongoDB从1.8版本开始采用binlog方式支持持久化的可靠性 6、数据一致性(事务支持)          Memcached 在并发场景下,用cas保证一致性         redis事务支持比较弱,只能保证事务中的每个操作连续执行         mongoDB不支持事务 7、数据分析          mongoDB内置了数据分析的功能(mapreduce),其他不支持 8、应用场景         redis:数据量较小的高性能操作和运算上         memcached:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)         MongoDB:主要解决海量数据的访问效率问题 from:http://blog.csdn.net/yangbutao/article/details/7437290

龙生   23 Oct 2015
View Details

Laravel学习笔记(六)数据库 数据库填充

数据库驱动的应用程序往往需要预先填充数据到数据库,以便进行测试和演示。 什么是种子数据 种子数据就是必须要加载了应用程序才能正常运行的数据。大多数应用程序需要在开发、测试和生产中加载一些参考数据。 一般来说,这些数据不是用户创建的,尽管我们可能一次一次的修改它们;我们的数据会依赖这些数据。 种子数据通常是不变的。一般来说,在应用程序中不可被编辑。但是,要求上它是可以被更改的,如果被更改了,种子数据需要被重新加载到部署的应用程序中。 理想的解决方案是自动化的:你没必要去关心它。当你签出代码,启动你的应用,他就准备好了。它应该提供数据完整性:创建的记录应通过您的验证。它应该很容易更新种子数据。 数据库填充与迁移 在前几节我们讲到了数据迁移,数据迁移可以创建数据表的结构,其实,数据迁移也同样可以插入数据,需要创建一个新的迁移文件:

运行如下: 编辑新生成的文件2014_03_12_063755_seed_authors_table.php,

运行该迁移文件如下: 查看数据库”authors”表,发现多了两条数据: 数据库迁移填充的坏处 虽然我们可以使用数据库迁移的方式进行填充,但是这种方式有很多的缺点: 如果执行了迁移的回滚操作,那么我们添加的数据将会丢失; 更改数据比较麻烦 Laravel数据库填充(Seeder) 从4开始,artisan现在提供了一种巧妙的方式填充数据库。迁移永远不应该被应用于填充数据库。数据填充使用artisan db:seed命令,来非常简单的完成填充操作。 这个简单的方式通过填充类使用测试数据填充您的数据库。所有的填充类都存放在app/database/seeds 目录下。填充类可以以形式命名,但最好遵循一些合理的约束,比如 UserTableSeeder等。默认情况下,一个 DatabaseSeeder 类以为您定义。在这个类中,您可以使用 call 函数运行其他填充类,允许您控制填充顺序。 创建新的填充文件 要给”authors”表填充数据,在app/database/seeds 目录下创建新的文件AuthorTableSeeder.php,编辑该文件:

然后执行artisan命令行:

  然后数据库中就会新加入一条记录。 还有一种全局的执行方法php artisan db:seed,可以执行多个填充类。该方法是执行的DatabaseSeeder这个类,我们编辑这个类:

您也可以使用 migrate:refresh 命令填充数据库,将会回滚并重新运行所有迁移:然后执行php artisan db:seed,这时同样会成功添加数据。

    参考资料:http://laravelbook.com/laravel-database-seeding 未完待续……   from:http://www.cnblogs.com/huangbx/p/Laravel_6.html

龙生   23 Oct 2015
View Details
1 279 280 281 415