.NET-object与Json(反)序列化,键提取
来源:互联网 发布:网络缓存级别最高延迟 编辑:程序博客网 时间:2024/05/22 03:25
数据模型如下:
[DataContractAttribute] class Model { [DataMember] public string Key { get; set; } [DataMember] public string Value { get; set; } public Model(string key, string value) { this.Key = key; this.Value = value; } }
需要为数据模型添加 DataContractAttribute
特性。
.NET下的 object与Json序列化对象帮助器:
public class JsonSerilization { // 将Json字符串转换为对象 public static T ToObject<T>(string jsonString) { using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) { return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms); } } // 将对象转成json public static string ToJson(object jsonObject) { if (jsonObject == null) return null; using (var ms = new MemoryStream()) { new DataContractJsonSerializer(jsonObject.GetType()).WriteObject(ms, jsonObject); return Encoding.UTF8.GetString(ms.ToArray()); } } }
应用以上对象,将数据对象序列化为Json对象:
List<Model> intances = new List<Model> {new Model("key1", "value1"), new Model("key2", "value2")}; string jsonStr = JsonSerilization.ToJson(intances); printf("intances转Json串: \n" + jsonStr);
输出结果图:
反序列化:
List<Model> intancesOrgin = JsonSerilization.ToObject<List<Model>>(jsonStr);
提取 intances 的所有键,所有值的string对象:
string keys = intances .Aggregate<Model, string>(null, (current, instance) => current + instance.Key + ";"); printf("提取所有的键,用分号隔开: \n" + keys); string values = intances .Aggregate<Model, string>(null, (current, instance) => current + instance.Value + ";"); printf("提取所有的值,用分号隔开: \n" + values);
整个过程输出如下:
1 0
- .NET-object与Json(反)序列化,键提取
- Object序列化成一个字符串(JSON的序列化)
- .net json序列化组件Json.NET(Newtonsoft.Json)
- 序列化与反序列号
- Newtonsoft.Json.dll使用 .net json序列化与返序列化
- 序列化与json
- ASP.NET的JSON序列化与反序列化
- .net JSON序列化数据
- .Net Json格式序列化
- asp.net Json序列化
- Asp.net Json序列化
- asp.net Json序列化
- Net序列化-JSON序列化
- .net 提取 json 数据
- form表单序列化转json(后台接收json转object)
- DataSnap与JSON序列化(1)
- DataSnap与JSON序列化(2)
- DataSnap与JSON序列化(3)
- 基于HTML5的动态线
- Android view 自定义控件
- zabbix告警 磁盘inodes占用过多的问题
- 元素宽度的最大百分比
- Ubuntu下IDEA无法输入中文问题 解决方法
- .NET-object与Json(反)序列化,键提取
- 1057. Stack (30)
- 如何在没有实际项目经验的情况下找到工作
- 返回第n个无平方数因数的数
- spyder使用笔记
- Oracle数据恢复--flashback
- 一些有用的网站
- 服务器端直接将HTML下载成Excel
- 大数据教程(五)—— Hadoop集群MYSQL的安装