json序列化.xml序列化.图片转base64.base64转图片.生成缩略图.IEnumerable<TResult> Select<TSource, TResult>做数据转换的五种方式
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>做数据转换的五种方式的更多相关文章
- ASP.NET Web API中的JSON和XML序列化
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- php json与xml序列化/反序列化
在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...
- 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 ...
- C# json、xml序列化
json序列化: public static string SerializeJson<T>(T json) { // 1. 需要添加引用 Newtonsoft.Json.dll,默认为 ...
- JAVA解析xml的五种方式比较
1)DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准 [优点] ① ...
- Yii 图片FTP批量上传 并生成缩略图
图片批量上传,前台使用 uploadify.swf,这个就不介绍了.这里使用两个扩展,一个是FTP上传的扩展,还有一个是生成缩略图的扩展地址:http://www.yiiframework.com/e ...
- Android_Bitmap_图片的二次采样并生成缩略图
1.Bitmap概述 Android系统支持几种图片(.png (preferred), .jpg (acceptable), .gif (discouraged)), 其中Bitmap位图#ffff ...
- java图片处理(加水印、生成缩略图)等之Thumbnailator库
Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持 ...
随机推荐
- webrtc windows下的编译
mkdir webrtc-checkoutcd webrtc-checkout set DEPOT_TOOLS_WIN_TOOLCHAIN=0set GYP_GENERATORS=ninjaset G ...
- uboot - *** Warning - bad CRC, using default environment
出现这个现象的原因 环境变量存储区没有相应的数据,产生的原因可能是: 1.首次烧写uboot启动,,出现这个提示,执行saveenv 指令保存环境变量即可: 2.nor fash芯片的 基地址出错. ...
- Mybatis-Spring包学习
MyBatis-Spring包用来将MyBatis无缝整合到Spring中.使用这个类库中的类, Spring将会加载必要的MyBatis工厂类和Session类. 这个类库也提供一个简单的方式来注入 ...
- mysql存储过程获取sqlstate message_text
群里有人询问,在mysql的proc中如何获取错误信息.错误编号呢?我们知道在oracle.mssql中比较简单: oracle中sqlcode,sqlerrm ;mssql中ERROR_PROCED ...
- maven中maven dependencies中依赖出现了项目
maven 中maven dependencies中依赖出现了项目,把依赖的项目关掉,项目消失,但是还是无法打包 ,出现的错误如图.说明:依赖的项目为project-dao 打包的项目为projec ...
- java集合类(2)
java集合的主要分为三种类型:JAVA集合位于 java.util包 Set(集) List(列表) Map(映射) arrays函数, equals():比较两个array是否相等. fill() ...
- Celery-4.1 用户指南: Application(应用)
Application Celery 库在使用之前必须初始化,一个celery实例被称为一个应用(或者缩写 app). Celery 应用是线程安全的,所以多个不同配置.不同组件.不同任务的 应用可以 ...
- HeapCreate深入研究
本机:win7(x86),4G内存 #include"stdafx.h"#include<windows.h>#include<stdio.h>#inclu ...
- QTP11使用DOM XPath以及CSS识别元素对象
我们知道,像DOM,Html,CSS,XPath等对对象的识别策略广泛运用于一些开源的工具,例如:Selenium,Watir,Watir-Webdriver,以前qtp版本是不支持这些东西的,现在q ...
- java.lang.OutOfMemoryError: Java heap space异常
最近使用Tomcat跑项目时,其他项目可以正常运行,但有一个项目报java.lang.OutOfMemoryError: Java heap space异常,查了资料后,找到一个处理我所遇见异常的解决 ...