json的三种反序列方式
来源:互联网 发布:淘宝卖刀具 编辑:程序博客网 时间:2024/06/01 07:39
JSON(JavaScript Object Notation),在实际的开发中非常常用,甚至一个json就可以保存所有需要的信心呢。
对象:一个对象以花括号"{"开始,并以"}"结束,json存储使用key:value形式,每一个键后 有一个冒号,冒号后是value内容,多个键值对的分隔使用逗号分隔,如:Var test = {"id":"123","name":"joe"}。
数组:以"["开始,并以"]"结束,其中是一个一个的对象,每个对象使用逗号分隔,如:Var test = [{"user":{"id":"123","name":"joe"}},{"user":{"id":"234","name":"tom"}}]
字符串:使用反斜杠分隔,如:Var test = "{\"id":\"123",\"name":\"joe"}"
当我们取出的数据为json格式的时候,往往需要反序列化json成相应的对象,进而可以进行相应的逻辑处理。目前我只是研究了三种json反序列化的方式,下边会一一举例记录一下三种反序列化应用。下边的Demo中使用到的User实体类为:
public class User { public string ID { set; get; } public string Name { set; get; } public string Sex { set; get; } public string Age { set; get; } }统一使用的json格式为:
var test = "{\"ID\":\"1\",\"Name\":\"张张\",\"Sex\":\"女\",\"Age\":\"1230\"}";
一、javaScriptSerializer反序列化
环境:引用System.Web.Extensions.dll
//javaScriptSerializer JavaScriptSerializer js = new JavaScriptSerializer(); var json3 = js.Deserialize<User>(test);
二、Newtonsoft反序列化环境:引用Newtonsoft.dll
//Newtonsoft var json2 = JsonConvert.DeserializeObject<User>(test);三、DataContractJsonSerializer反序列化
环境:引用System.Runtime.Serialization.dll
首先需要写一个类,其中包括了对日期的处理,有些json数据中包含日期类型的数据,进行处理后就可以得到我们常见的格式:
public static T DeserializeFromString<T>(string str) where T : class { try { //增加时间处理 string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}"; Regex reg = new Regex(p); str = reg.Replace(str, r => { string result = string.Empty; DateTime dt = DateTime.Parse(r.Groups[0].Value); dt = dt.ToUniversalTime(); TimeSpan ts = dt - DateTime.Parse("1970-01-01"); result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds); return result; }); byte[] buffer = Encoding.UTF8.GetBytes(str); MemoryStream ms = new MemoryStream(buffer, 0, buffer.Length); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); return ser.ReadObject(ms) as T; } catch (Exception e) { return null; } }调用刚写的DeserializeFromString类:
//DataContractJsonSerializer解析方法 User p = DeserializeFromString<User>(test);
对于程序员来讲,将json反序列化对象会很容易操作,所以对于使用json格式存储的开发者来讲这些是必备的,仅以此文记录自己对json的一点研究。
- json的三种反序列方式
- C#中,Json的序列化和反序列化的几种方式总结
- 在C#中,Json的序列化和反序列化的几种方式
- 在C#中,Json的序列化和反序列化的几种方式总结
- 在C#中,Json的序列化和反序列化的几种方式总结
- 在C#中,Json的序列化和反序列化的几种方式总结
- 在C#中,Json的序列化和反序列化的几种方式总结
- Json数据的序列化与反序列化的三种常用方法介绍
- Json数据的序列化与反序列化的三种常用方法介绍
- json的反序列化
- c#序列化及反序列化(三种方式)
- JSON反序列化的方法
- Android Json数据的反序列化
- json数组的反序列化
- json多层数组的反序列化
- 序列化反序列化的几种方式
- 三种序列化的方法以及反序列化
- json反序列
- 网络编程(2)—UDP
- shell程序练习
- eclipse 去掉无用的 validation 优化eclipse
- Rxjava初步理解
- 打瓶颈,破性能,性能大牛教你怎么玩转性能测试
- json的三种反序列方式
- 【快速幂、组合数学】BZOJ1008 [HNOI2008]越狱
- linux断点续传目录
- 为PaaS云平台提供整合的全栈式监控
- centos7 Apache编译、安装
- python中 __name__及__main()__的妙处
- 【代码笔记】iOS-键盘自适应弹出
- CPAL-1.0 开源许可证说明
- 富士通MB95F636H输出PWM