JSON序列化

    /// <summary>
/// JSON序列化
/// </summary>
public static class SPDBJsonConvert
{
/// <summary>
/// 对象序列化JSON
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, t);
string jsonString = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
/// <summary>
/// JSON序列化对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonString"></param>
/// <returns></returns>
public static T JsonDeserialize<T>(string jsonString)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T obj = (T)ser.ReadObject(ms);
return obj;
}
}

 xml序列化

/// <summary>        

/// XML反序列化        

/// </summary>        

/// <param name="type">类型</param>        

/// <param name="xml">XML字符串</param>        

/// <returns></returns>        

public static object Deserialize(Type type, string xml)        

{            

try            

{                

using (StringReader sr = new StringReader(xml))                

{                    

XmlSerializer xmldes = new XmlSerializer(type);                   

  return xmldes.Deserialize(sr);         

        }        

     }         

    catch (Exception e)       

      {

                return null;     

        }      

   }

 /// <summary>      

 /// 序列化       

 /// </summary>  

 /// <param name="type">类型</param>        

/// <param name="obj">对象</param>        

/// <returns></returns>        

public static string Serializer(Type type, object obj)   

      {            

MemoryStream Stream = new MemoryStream();     

        XmlSerializer xml = new XmlSerializer(type);    

         try          

   {            

     //序列化对象         

        xml.Serialize(Stream, obj);     

        }         

    catch (InvalidOperationException)      

       {           

      throw;        

     }          

   Stream.Position = ;        

   StreamReader sr = new StreamReader(Stream);    

    string str = sr.ReadToEnd();

    sr.Dispose();    

    Stream.Dispose();

            return str;        

}

 图片转base64.base64转图片

/// <summary>        

/// 图片转base64        

/// </summary>        

/// <param name="filename"></param>        

public static string ImgToBase64String(string filename)        

{                

Bitmap bmp = new Bitmap(filename);

 MemoryStream ms = new MemoryStream();                

bmp.Save(ms, ImageFormat.Jpeg);                

byte[] arr = new byte[ms.Length];                

ms.Position = ;                

ms.Read(arr, , (int)ms.Length);                

ms.Close();                

String strbaser64 = Convert.ToBase64String(arr);          

   return strbaser64;       

  }
/// <summary>
/// base64转图片
/// </summary>
/// <param name="base64Code"></param>
public static Bitmap Base64StringToImage(string base64Code)
{
byte[] arr = Convert.FromBase64String(base64Code);
MemoryStream ms = new MemoryStream(arr);
Bitmap bmp = new Bitmap(ms);
ms.Close();
return bmp;
}

 生成缩略图

/// <summary>       

  /// 生成缩略图        

/// </summary>        

/// <param name="img">原始图片</param>        

/// <param name="thumbnailImagePath">缩略图地址</param>        

/// <param name="width">图片宽度</param>        

/// <param name="height">图片高度</param>        

/// <param name="p"></param>        

public static void CutImage(Image img, string thumbnailImagePath, int width, int height)        

{           

  Image serverImage = img;            

//画板大小            

int towidth = width;         

    int toheight = height;        

     //缩略图矩形框的像素点       

      int x = ;         

    int y = ;          

   int ow = serverImage.Width;       

      int oh = serverImage.Height;

            if (ow > oh)         

    {             

    toheight = serverImage.Height * width / serverImage.Width;    

         }          

   else          

   {             

    towidth = serverImage.Width * height / serverImage.Height;   

          }       

      //新建一个bmp图片      

       Image bm = new Bitmap(width, height);      

       //新建一个画板          

   Graphics g = Graphics.FromImage(bm);   

          //设置高质量插值法     

        g.InterpolationMode = InterpolationMode.High;    

         //设置高质量,低速度呈现平滑程度     

        g.SmoothingMode = SmoothingMode.HighQuality;  

           //清空画布并以透明背景色填充        

     g.Clear(Color.White);         

    //在指定位置并且按指定大小绘制原图片的指定部分  

           g.DrawImage(serverImage, new Rectangle((width - towidth) / , (height - toheight) / , towidth, toheight),                 , , ow, oh,                 GraphicsUnit.Pixel);

            //以jpg格式保存缩略图      

       bm.Save(thumbnailImagePath, ImageFormat.Jpeg);  

           serverImage.Dispose();       

      bm.Dispose();       

      g.Dispose();      

   }

  很多时候很多状态数据库里可能都是保存的int。

                        但是在web上要转换成string.由于model要映射到数据库。

                              一般不能随意添加字段。所以在此提供一个方便的数据转换方法。

                                       至少不用写个循环去匹配每个字段

方式1

 List<EntityBM_CompanyDept> result = data.Select(ConvertBM_CompanyDept).ToList();

/// <summary>
/// 数据转换
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[NonAction]
protected virtual EntityBM_CompanyDept ConvertBM_CompanyDept(BM_CompanyDept model)
{
return new EntityBM_CompanyDept()
{
Id = model.Id,
DeptId = model.DeptId,
DeptName = model.DeptName,
ParentDeptId = model.ParentDeptId,
LevelCode = model.LevelCode,
IsCostCenter = model.IsCostCenter,
IsProfitCenter = model.IsProfitCenter,
CompanyDeptStatus = model.CompanyDeptStatus,
Result = ""
};
}

方式二

 List<EntityBM_CompanyDept> l = data.Select<BM_CompanyDept, EntityBM_CompanyDept>((dr) =>                   

  {                        

EntityBM_CompanyDept m = new EntityBM_CompanyDept()                

         {                             Id = dr.Id

//这里写转换字段

  };                      

   return m;               

      }).ToList<EntityBM_CompanyDept>();

方式三

      List<EntityBM_CompanyDept> l1 = data.Select((BM_CompanyDept) =>                     {                     

    EntityBM_CompanyDept m = new EntityBM_CompanyDept()                  

       {                             Id = BM_CompanyDept.Id,//转换字段

                        };                  

       return m;                 

    }).ToList<EntityBM_CompanyDept>();

  方式四

 List<ExtraterritorialDataDto> rows = new List<ExtraterritorialDataDto>();

  if (rows != null)
{
rows = rows.Select(a => new ExtraterritorialDataDto
{
Id = a.Id,//主键列
messagesubject = a.messagesubject,//主题
senderaddress = a.senderaddress,//发送者
Month = a.datetime.ToString(),//年月日
recipientaddress = a.recipientaddress//接受者
}).ToList(); }

方式五

List<ExtraterritorialDataDto> rows = new List<ExtraterritorialDataDto>();

if (rows != null)
{
var rows2 = rows.Select(a => new
{
Id = a.Id,//主键列
messagesubject = a.messagesubject,//主题
senderaddress = a.senderaddress,//发送者
Month = a.datetime.ToString(),//年月日
recipientaddress = a.recipientaddress//接受者
}).ToList(); }

方式四和方式五的差距在于一个是显式类型。一个是匿名类型

json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式的更多相关文章

  1. ASP.NET Web API中的JSON和XML序列化

    ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...

  2. 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化

    谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...

  3. php json与xml序列化/反序列化

    在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...

  4. Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化

    前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET W ...

  5. C# json、xml序列化

    json序列化: public static string SerializeJson<T>(T json) { // 1. 需要添加引用 Newtonsoft.Json.dll,默认为 ...

  6. JAVA解析xml的五种方式比较

     1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ① ...

  7. Yii 图片FTP批量上传 并生成缩略图

    图片批量上传,前台使用 uploadify.swf,这个就不介绍了.这里使用两个扩展,一个是FTP上传的扩展,还有一个是生成缩略图的扩展地址:http://www.yiiframework.com/e ...

  8. Android_Bitmap_图片的二次采样并生成缩略图

    1.Bitmap概述 Android系统支持几种图片(.png (preferred), .jpg (acceptable), .gif (discouraged)), 其中Bitmap位图#ffff ...

  9. java图片处理(加水印、生成缩略图)等之Thumbnailator库

    Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持 ...

随机推荐

  1. PHP判断键值数组是否存在,使用empty或isset或array_key_exists(转)

    一个例子 猜猜看,下面的例子会输出什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $a = array('a'=>1, 'b'=>0, 'c'= ...

  2. 服务监控Zabbix和Nagios的继任者

    本文转载自:https://blog.csdn.net/moonpure/article/details/78633668 为了调研市场,从而做出更好的监控工具,David Gildeh 曾采访了超过 ...

  3. WebDriver测试web中遇到的弹出框或不确定的页面

    我自己是用try catch解决的,不知道其他人的解决方法?如有,可以留言

  4. 二 Istio设计的核心原则

    Istio架构关键目标 最大化透明度:Istio将自身自动注入到服务间所有的网络路径中.Istio使用sidecar代理来捕获流量,并且在尽可能的地方自动编程网络层,通过代理来路由流量,无需改动应用程 ...

  5. d-s证据理论

    证据理论是Dempster于1967年首先提出,由他的学生Shafer于1976年进一步发展起来的一种不精确推理理论,也称为Dempster/Shafer 证据理论(D-S证据理论),属于人工智能范畴 ...

  6. C# IL中间代码注入实现切面编程

    背景及现状:之前分享的那篇“面向切面编程–渲染监控日志记录方案”中提供了利用RealProxy作为代理类来生成代理的面向切面的编程方法,那个方法可以实现面向切面编程进行日志记录,现在渲染主程序也是采用 ...

  7. 1106SQLserver基础--变量、运算符的使用,if...else,while语句

    数据库---变量(对数据库中的数据没有任何影响) 作用:临时存储数据的作用,起一个衔接的作用,为了方便理解存储过程. 例:Declare @hello varchar(20) Set @hello=’ ...

  8. 类型:.net;问题:iis注册;结果:.net4.0注册到IIS ,重新注册IIS ,iis注册

    .net4.0注册到IIS ,重新注册IIS ,iis注册   IIS和.netfw4.0安装顺序是从前到后,如果不小心颠倒了,无所谓. 打开程序-运行-cmd:输入一下命令重新注册IIS C:\WI ...

  9. 问题:oracle select into;结果:oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解

    oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解 (2011-07-08 08:59:47) 转载▼ 标签: it 分类: oracle 我们经常会遇 ...

  10. sea.js的模块化开发

    为什么使用sea.js? Sea.js 追求简单.自然的代码书写和组织方式,具有以下核心特性: 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像Node.js 一般书写模块代码. 自然 ...