利用Newtonsoft.Json实现Json序列化与反序列化
在项目中用到了Newtonsoft.Json来实现序列化和反序列化,在这里写下实现代码。
1、创建类用于排除不序列化的属性
public class ExcludePropertiesContractResolver : DefaultContractResolver
{
IEnumerable<string> lstExclude; public ExcludePropertiesContractResolver(IEnumerable<string> excludedProperties)
{
lstExclude = excludedProperties;
} protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
return base.CreateProperties(type, memberSerialization).ToList().FindAll(p => !lstExclude.Contains(p.PropertyName));
}
}
2、序列化方法
以下分别是将对象、DataTable、集合序列化为Json字符串的方法:
/// <summary>
/// T对象转换成json字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string GetJsonString<T>(T obj, params string[] ignoreFields)
{
IsoDateTimeConverter iso = new IsoDateTimeConverter();
iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";
iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;
string jsonStr = string.Empty;
JsonSerializerSettings js = new JsonSerializerSettings();
if (ignoreFields != null && ignoreFields.Length > 0)
{
List<string> ignoreList = ignoreFields.ToList();
js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);
}
js.Converters.Add(iso);
jsonStr = JsonConvert.SerializeObject(obj, Formatting.Indented, js);
return jsonStr;
} /// <summary>
/// DataTable对象转换成json字符串
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetJsonString(DataTable dt, params string[] ignoreFields)
{
IsoDateTimeConverter iso = new IsoDateTimeConverter();
iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";
iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;
string jsonStr = string.Empty;
JsonSerializerSettings js = new JsonSerializerSettings();
if (ignoreFields != null && ignoreFields.Length > 0)
{
List<string> ignoreList = ignoreFields.ToList();
js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);
}
js.Converters.Add(new DataTableConverter());
js.Converters.Add(iso);
jsonStr = JsonConvert.SerializeObject(dt, Formatting.Indented,js);
return jsonStr;
} /// <summary>
/// List对象转换成json字符串
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetJsonString<T>(List<T> list, params string[] ignoreFields)
{
IsoDateTimeConverter iso = new IsoDateTimeConverter();
iso.DateTimeFormat = "yyyy-MM-ddTHH:mm:ss";
iso.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;
string jsonStr = string.Empty;
JsonSerializerSettings js = new JsonSerializerSettings();
if (ignoreFields != null && ignoreFields.Length > 0)
{
List<string> ignoreList = ignoreFields.ToList();
js.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
js.ContractResolver = new ExcludePropertiesContractResolver(ignoreList);
}
js.Converters.Add(iso);
jsonStr = JsonConvert.SerializeObject(list, Formatting.Indented, js);
return jsonStr;
}
3、反序列化
以下是将Json字符串反序列化为对象、集合的方法。
/// <summary>
/// json字符串转换成T对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonStr"></param>
/// <returns></returns>
public static T GetObjectByJsonString<T>(string jsonStr)
{
T obj = JsonConvert.DeserializeObject<T>(jsonStr);
return obj;
} /// <summary>
/// json字符串转换成List对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonStr"></param>
/// <returns></returns>
public static List<T> GetListByJsonString<T>(string jsonStr)
{
List<T> list = JsonConvert.DeserializeObject<List<T>>(jsonStr);
return list;
}
利用Newtonsoft.Json实现Json序列化与反序列化的更多相关文章
- 利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤
项目下载:JavaScriptSerializer_对JSON对象序列化与反序列化及过滤器 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 1. 首 ...
- .net core Json字符串的序列化和反序列化通用类源码,并模拟了10万数据对比DataContractJsonSerializer和Newtonsoft性能
我们在开发中Json传输数据日益普遍,有很多关于Json字符串的序列化和反序列化的文章大多都告诉你怎么用,但是却不会告诉你用什么更高效.因为有太多选择,人们往往会陷入选择难题. 相比.NET Fram ...
- Json数据的序列化与反序列化的三种经常用法介绍
下面内容是本作者从官网中看对应的教程后所做的demo.其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方.. 还请各位读者批判性对待... 本文主要介绍在Json数据的序列化 ...
- 【转】在C#中使用Json.Net进行序列化和反序列化及定制化
作者:Minotauros 原文地址:在C#中使用Json.Net进行序列化和反序列化及定制化 序列化(Serialize)是将对象转换成字节流,并将其用于存储或传输的过程,主要用途是保存对象的状态, ...
- JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值
在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string u ...
- .net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值
在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string url, ...
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
"/"应用程序中的服务器错误.使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. ...
- 对 JSON 数据进行序列化和反序列化
如何:对 JSON 数据进行序列化和反序列化 2017/03/30 作者 JSON(JavaScript 对象符号)是一种高效的数据编码格式,可用于在客户端浏览器和支持 AJAX 的 Web 服务之间 ...
- 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错
如题 报错提示: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值.","Sta ...
- ng json格式的序列化和反序列化
ng中自带方法 angular.toJson 序列化angular.fromJson 反序列化 结果: 代码: <!DOCTYPE html> <html ng-app=" ...
随机推荐
- ansible管理
查看版本: ansible –version 升级pip安装的ansible: sudo pip install -U ansible
- Ibatis 异常:Unable to open connection to "oledb , provider V2.0.0.0 in framework .NET V2.0".
在实际项目中使用了ibatis,然后在开发过程中遇到一些问题,最严重的就是这个“Unable to open connection to "Microsoft SQL Server, pro ...
- 【教程】【FLEX】#002 请求服务端数据(UrlLoader)
为什么Flex需要请求服务端读取数据,而不是自己读取? Flex 是一门界面语言,主要是做界面展示的,它能实现很多绚丽的效果,这个是传统Web项目部能比的. 但是它对数据库和文件的读写 没有良好的支持 ...
- yii中第三方库
yii中存在一些路径别名:ext:表示包含了所有第三方扩展的目录 参考:http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.namespac ...
- 学习练习 java面向对象梯形面积
package com.hanqi; public class Ladder { double ShangDi; double XiaDi; double Gao; double MianJi; La ...
- python字符串常用操作方法
python字符串操作常用操作,如字符串的替换.删除.截取.复制.连接.比较.查找.分割等,需要的朋友可以参考下. 1.去除空格str.strip():删除字符串两边的指定字符,括号的写入指定字符,默 ...
- oracle权限
Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户publi ...
- c# 利用 两个TREEVIEW控件完成TEENODE的鼠标拖动操作
功能说明: 我们有两个TREEVIEW控件——TREEVIEW1,TREEVIEW2.Treeview1内有三个NODE,Treeview2内有三个NODE.将Treeview1内的NODE拖动到Tr ...
- LINQ to XML 实战
LINQ to XML 轴定义:创建XML树或将XML文档加载到XML树之后,可以进行查询,从而查找元素并检索它们的值. 两类轴方法:-一些轴就是XELement和XDocument类中返回IEnum ...
- solr5.5教程-solr.home 配置
solr/home是solr实例化core核的依据和入口,是必不可少的配置. 1.在web.xml中设置 <env-entry> <env-entry-name>solr/ho ...