Newtonsoft.Json(Json.Net)学习笔记
来源:互联网 发布:死而后已不亦远乎翻译 编辑:程序博客网 时间:2024/06/06 07:26
今天学习了JSON序列化和反序列化的一个方法,特此记一下,顺便吐槽一下,新建的model有189个字段,我还给加了注释。。。。
Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库
首先引用一个dll,Newtonsoft.Json.dll
将Json序列化和反序列化的简单封装为jsonhelper类
public class JsonHelper { /// <summary> /// 将对象序列化为JSON格式 /// </summary> /// <param name="o">对象</param> /// <returns>json字符串</returns> public static string SerializeObject(object o) { string json = JsonConvert.SerializeObject(o); return json; } /// <summary> /// 解析JSON字符串生成对象实体 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})</param> /// <returns>对象实体</returns> public static T DeserializeJsonToObject<T>(string json) where T : class { JsonSerializer serializer = new JsonSerializer(); StringReader sr = new StringReader(json); object o = serializer.Deserialize(new JsonTextReader(sr), typeof(T)); T t = o as T; return t; } /// <summary> /// 解析JSON数组生成对象实体集合 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param> /// <returns>对象实体集合</returns> public static List<T> DeserializeJsonToList<T>(string json) where T : class { JsonSerializer serializer = new JsonSerializer(); StringReader sr = new StringReader(json); object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>)); List<T> list = o as List<T>; return list; } /// <summary> /// 反序列化JSON到给定的匿名对象. /// </summary> /// <typeparam name="T">匿名对象类型</typeparam> /// <param name="json">json字符串</param> /// <param name="anonymousTypeObject">匿名对象</param> /// <returns>匿名对象</returns> public static T DeserializeAnonymousType<T>(string json, T anonymousTypeObject) { T t = JsonConvert.DeserializeAnonymousType(json, anonymousTypeObject); return t; } }自己建的model类,字段太多,就不全部粘贴了
public class Model { public string NameCN = "";//中文姓名 public string NameEN = "";//英文姓名(姓和名之间用/隔开)}
程序调用
Model model = new Model();model.NameCN = "康";model.NameEN = "kang";//实体序列化和反序列化string json1 = JsonHelper.SerializeObject(model);//json1:{"NameCN":"康","NameEN":"kang"}Model model2 = JsonHelper.DeserializeJsonToObject<Model>(json1); //实体集合序列化和反序列化List<Model> modelList=new List<Model>(){model,model2};string json2 = JsonHelper.SerializeObject(modelList);//json2:[{"NameCN":"康","NameEN":"kang"},//{"NameCN":"康","NameEN":"kang"}]List<Model> modelList2 = JsonHelper.DeserializeJsonToList<Model>(json2);//DataTable序列化和反序列化DataTable dt = new DataTable();dt.TableName = "Model";dt.Columns.Add("NameCN");dt.Columns.Add("NameEN");dt.Columns.Add("Remark1");DataRow dr = dt.NewRow();dr["NameCN"] = "康";dr["NameEN"] = "kang";dr["Remark1"] = "我都不认识这些字段";dt.Rows.Add(dr);string json3 = JsonHelper.SerializeObject(dt); //json3 : [{"NameCN":"康","NameEN":"kang","Remark1":"我都不认识这些字段"}]DataTable modelDt3 = JsonHelper.DeserializeJsonToObject<DataTable>(json3);List<Model> modelList3 = JsonHelper.DeserializeJsonToList<Model>(json3);//验证对象和数组 Model model4 = JsonHelper.DeserializeJsonToObject<Model>("{\"NameCN\":\"康\",\"NameEN\":\"kang\"}");List<Model> modelList4 = JsonHelper.DeserializeJsonToList<Model>("[{\"NameCN\":\"康\",\"NameEN\":\"kang\"}]");
参考http://www.cnblogs.com/freshman0216/p/4161800.html
阅读全文
0 0
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- Newtonsoft.Json(Json.Net)学习笔记
- 扩展Json.net(Newtonsoft.Json)
- [.Net码农]Newtonsoft.Json 用法
- wince 能用的 Newtonsoft.Json(Json.Net)
- Json(Json.Net)学习笔记
- Newtonsoft.Json简要使用笔记
- Newtonsoft.Json类库学习
- Newtonsoft.Json
- Newtonsoft.Json
- 学习笔记5:mysql高可用(主从复制监控)
- 正则表达式的基本语法
- Python Excel Mini Cookbook
- Unity切换成左右屏效果
- jupyter笔记(9/27)-------快捷键
- Newtonsoft.Json(Json.Net)学习笔记
- 学习笔记
- u盘装系统后提示No bootable device怎么办?
- 数据结构 --- Java之栈的实现
- 安装tensorflow
- Python 字符串编码
- POJ 3417 Network
- npm scripts 使用指南
- 去除DWR每次调用都输出日志的问题