.NET JSON对象序列化和反序列化
class Program
{
static void Main(string[] args)
{
Console.WriteLine("============================序列化单个对象为JSON格式======================================================");
var jsonObj = GetUser().ToJsonString();
Console.WriteLine(jsonObj + "\n\r "); Console.WriteLine("============================序列化集合对象为JSON格式======================================================");
var jsonListObj = GetList().ToJsonString();
Console.WriteLine(jsonListObj + "\n\r "); Console.WriteLine("============================序列化字符串集合======================================================");
var jsonStrObj = GetString().ToJsonString();
Console.WriteLine(jsonStrObj + "\n\r "); Console.WriteLine("============================构建一个JSON对象,反序列化为User对象===================================");
//构建JSON对象
string str = "{\"Description\":\"少林袈裟旗舰店店长\",\"Id\":\"1\",\"Name\":\"少林扫地神僧\"}";
var user = str.ToJsonObject<User>();
var entityObj = string.Format("json format str convert to user object:Id={0},Name={1},Description={2}", user.Id, user.Name, user.Description);
Console.WriteLine(entityObj);
Console.ReadKey();
} public static User GetUser()
{
User user = new User()
{
Id = ,
Name = "无崖子",
Description = "逍遥派掌门"
};
return user;
} public static List<User> GetList()
{
List<User> list = new List<User>() {
new User(){ Id=,Name="丁春秋", Description="星宿派掌门"},
new User(){ Id=,Name="庄聚贤", Description="无所事事的帅哥"},
new User(){ Id=,Name="段正淳", Description="风流倜傥大理王爷"}};
return list;
} public static IList<string> GetString()
{
IList<string> strList = new List<string>();
strList.Add("乔峰");
strList.Add("段誉");
strList.Add("虚竹");
return strList;
}
} public class User
{
public int Id { get; set; } public string Name { get; set; } public string Description { get; set; }
} public static class StringExtensions
{
/// <summary>
/// 将对象转化为Json字符串
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="instanse">对象本身</param>
/// <returns>JSON字符串</returns>
public static string ToJsonString<T>(this T instanse)
{
try
{
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
js.WriteObject(ms, instanse);
ms.Flush();
ms.Seek(, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms);
return sr.ReadToEnd();
}
}
catch
{
return String.Empty;
}
} /// <summary>
/// 将字符串转化为JSON对象,如果转换失败,返回default(T)
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="s">字符串</param>
/// <returns>转换值</returns>
public static T ToJsonObject<T>(this string s)
{
try
{
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
StreamWriter sw = new StreamWriter(ms);
sw.Write(s);
sw.Flush();
ms.Seek(, SeekOrigin.Begin);
return (T)js.ReadObject(ms);
}
}
catch
{
return default(T);
}
}
}
.NET JSON对象序列化和反序列化的更多相关文章
- Json对象序列化与反序列化
如果后台的参数数对象,需要在前台传入: JS代码: //创建JS对象 var CUTTING_TABLET_MO = new Object(); CUTTING_TABLET_MO.CUTTING_T ...
- Java对象序列化与反序列化一 JSON
Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student { private String nam ...
- 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型;
导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型: 二:C#对象.集合.DataTable与Json内容互转示例: ...
- C#对象序列化与反序列化zz
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...
- [.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化
[.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化 本节导读: 介绍JSON的结构,在JS中的使用.重点说明JSON如何在.N ...
- C#对象序列化与反序列化
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍.......................... ...
- C#中的Json的序列化和反序列化
Json是一种通用的数据格式,我们在数据交换的时候,经常会用到,下面介绍c#中的json序列化和反序列化,当然也可用在asp.net,silverlight,wpf中.我们在下面实例讲解如何进行Jso ...
- Json的序列化与反序列化
对于Json的序列化和反序列化,如果自己编写源代码来实现的话,很复杂很烦,所以我采用的是使用别人已经写好的引用文件.这类文件网上有很多,我用的是LitJson,当然Newtonsoft也可以,但后者需 ...
- Newtonsoft.Json 的序列化与反序列化
首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一 ...
随机推荐
- loadView、viewDidLoad、viewWillAppear、viewDidAppear等详解
loadView; This is where subclasses should create their custom view hierarchy if they aren't using a ...
- 【如何快速的开发一个完整的iOS直播app】(播放篇)
原文转自:袁峥Seemygo 感谢分享.自我学习 前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkpl ...
- svn ignore
工程名为simple,采用maven进行依赖管理,在check in时我不想工程下maven产生的target目录被提交到SVN(包括目录下所有文件和目录本身). 解决方法: 要被忽略的目录必须是未版 ...
- [修改后]html+css 做成一个可浏览的表格
现在表格内容需要显示的要求如下: 1, 表格很大,界面放不小,需要放到div中. 2, 在div中可以用scroll滑动查看. 3, td中的内容保持在一行中. 4, 可以点击tr,然后可以选中并了解 ...
- shell <<EOF
1.考虑下面的需求,在主shell执行命令,进入其他的命令,后面的输入,想作为命令的输入,而不是主shell的输入,怎么办? 2.使用<<EOF,告诉主shell,后续的输入,是其他命令或 ...
- JSP内置对象有哪些呢?
内置对象 request request 对象是 javax.servlet.httpServletRequest类型的对象. 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的 ...
- 【转】怎样查出SQLServer的性能瓶颈
怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...
- css3动画之图片旋转
直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- 【洛谷P2737】Beef McNuggets
首先有这样一个结论:若p,q为自然数,且gcd(p,q)=1,那么px+qy不能表示的最大数为pq-p-q 那么本题中p,q均取决于最大的两个数,不妨取256,那么上界为256^2-256*2 之后就 ...
- 【学习】JAVA的第一天(补)
补上1024第一天的JAVA学习,也刚好是程序员节.今天学习了JAVA的一些历史和基础环境的配置,以及HelloWorld入门程序. JAVA体系:JAVAME(一些简单的移动端开发).JAVAEE( ...