C#实现JSON和对象之间互相转换功能示例
程序员文章站
2023-12-16 13:29:04
本文实例讲述了c#实现json和对象之间互相转换功能。分享给大家供大家参考,具体如下:
1.首先是声明用户信息对象,datacontract修饰类,表示可以被解析成jso...
本文实例讲述了c#实现json和对象之间互相转换功能。分享给大家供大家参考,具体如下:
1.首先是声明用户信息对象,datacontract修饰类,表示可以被解析成json,datamember修饰属性,order表示 解析的顺序,另外lover是数组列表,表示女朋友个数
address 表示送货地址,dailyrecord 表示日常记录
using system; using system.collections.generic; using system.linq; using system.text; using system.runtime.serialization; namespace functiontest.model { [datacontract] public class userinfo { [datamember(order =0)] public string username { get; set; } [datamember(order = 1)] public int age { get; set; } [datamember(order = 2)] public int gender { get; set; } [datamember(order =3)] public list<string> lover { get; set; } [datamember(order = 4)] public contactaddress address { get; set; } [datamember(order = 5)] public dictionary<string, string> dailyrecord { get; set; } } [datacontract] public class contactaddress { [datamember(order =0)] public string province { get; set; } [datamember(order = 1)] public string city { get; set; } [datamember(order = 2)] public string country { get; set; } [datamember(order = 3)] public string details { get; set; } } }
2.json帮助类 核心代码
/// <summary> /// json转换成对象 /// </summary> /// <typeparam name="t"></typeparam> /// <param name="jsontext"></param> /// <returns></returns> public static t jsontoobject<t>(string jsontext) { datacontractjsonserializer s = new datacontractjsonserializer(typeof(t)); memorystream ms = new memorystream(encoding.utf8.getbytes(jsontext)); t obj = (t)s.readobject(ms); ms.dispose(); return obj; } /// <summary> /// 对象转换成json /// </summary> /// <typeparam name="t"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string objecttojson<t>(t obj) { datacontractjsonserializer serializer = new datacontractjsonserializer(typeof(t)); string result = string.empty; using (memorystream ms = new memorystream()) { serializer.writeobject(ms, obj); ms.position = 0; using (streamreader read = new streamreader(ms)) { result = read.readtoend(); } } return result; }
3.调用
//1.对象-->json userinfo info = new userinfo { age = 10, gender = 1, username = "刘德华", lover = new list<string> { "美女1", "美女2", "美女3" }, address = new contactaddress { province = "湖南省", city = "长沙市", country = "望城县", details = "某旮旯快递找不到的地方" }, dailyrecord = new dictionary<string, string> { { "星期一", "吃饭" }, { "星期二", "洗衣服" }, { "星期三", "好事情" } } }; string json = objecttojson<userinfo>(info);
4.反序列化后的结果
复制代码 代码如下:
{"username":"刘德华","age":10,"gender":1,"lover":["美女1","美女2","美女3"],"address":{"province":"湖南省","city":"长沙市","country":"望城县","details":"某旮旯快递找不到的地方"},"dailyrecord":[{"key":"星期一","value":"吃饭"},{"key":"星期二","value":"洗衣服"},{"key":"星期三","value":"好事情"}]}
ps:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:
在线json代码检验、检验、美化、格式化工具:
json在线格式化工具:
在线xml/json互相转换工具:
json代码在线格式化/美化/压缩/编辑/转换工具:
在线json压缩/转义工具:
更多关于c#相关内容还可查看本站专题:《c#字符串操作技巧总结》、《c#常见控件用法教程》、《winform控件用法总结》、《c#程序设计之线程使用技巧总结》、《c#中xml文件操作技巧汇总》、《c#数据结构与算法教程》、《c#数组操作技巧总结》及《c#面向对象程序设计入门教程》
希望本文所述对大家c#程序设计有所帮助。