1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 自定义实现Json字符串向C#对象转变办法

自定义实现Json字符串向C#对象转变办法

时间:2018-09-09 03:19:44

相关推荐

自定义实现Json字符串向C#对象转变办法

后端开发|C#.Net教程

Json 对象 转变

后端开发-C#.Net教程

这里使用Atrribute的方式实现了Json字符串向C#对象的转变。因为功能局限,此版本只是针对于Json字符串,如”response”:”Hello”,”id”:21231513,”result”:100,”msg”:”OK.”; 而不是Json数组。这里的Atrribute是作用在属性上,像NHibernate中的Atrribute一样,是在运行时通过反射来获取这个属性对应于Json字符串中的哪个key.

云端秒抢网站源码,vscode运行v,ubuntu集群运维,tomcat线程飙升,wal模式 sqlite,phpcms v9 地图插件,最优秀的前端框架,爬虫 爬小说,服务器 php,seo行业报告,jsp网站源码安装,网页中flash动画 自动产生js文件,115社区模板,网站登录页面模板下载,进销存erp管理系统源码,小偷程序静态lzw

namespace JsonMapper{ [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)] public class JsonFieldAttribute : Attribute { private string _Name = string.Empty; public string Name { get { return _Name; } set { _Name = value; } } }}

接下来是这个转换工具中的核心代码,主要是分解并且分析Json字符串中key与value, 并且通过反射获得对象中的各个对应属性并且赋值。

源码试用期限,vscode插件模拟,ubuntu更改用户名,tomcat 64下载,sqlite 表删除数据,网页设计基础视频教程,基于access的外贸公司订单管理数据库,万网服务器邮件,jquery插件显示图片,业务系统前端框架,反爬虫的网站,php图片压缩,seo快速优化软件,springboot坑,dede field标签,网络版进销web网站,网页下拉箭头,海洋cms模板简洁,win8后台模板,手机端管理页面,商城管理系统模板下载,免费卡盟程序lzw

namespace JsonMapper{ public class JsonToInstance { public T ToInstance(string json) where T : new() { Dictionary dic = new Dictionary(); string[] fields = json.Split(,); for (int i = 0; i < fields.Length; i++ ) {string[] keyvalue = fields[i].Split(:);dic.Add(Filter(keyvalue[0]), Filter(keyvalue[1])); } PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); T entity = new T(); foreach (PropertyInfo property in properties) {object[] propertyAttrs = property.GetCustomAttributes(false);for (int i = 0; i < propertyAttrs.Length; i++) { object propertyAttr = propertyAttrs[i]; if (propertyAttr is JsonFieldAttribute) { JsonFieldAttribute jsonFieldAttribute = propertyAttr as JsonFieldAttribute; foreach (KeyValuePair item in dic) { if (item.Key == jsonFieldAttribute.Name) {Type t = property.PropertyType;property.SetValue(entity, ToType(t, item.Value), null);break; } } }} } return entity; } private string Filter(string str) { if (!(str.StartsWith("\"") && str.EndsWith("\""))) {return str; } else {return str.Substring(1, str.Length - 2); } } public object ToType(Type type, string value) { if (type == typeof(string)) {return value; } MethodInfo parseMethod = null; foreach (MethodInfo mi in type.GetMethods(BindingFlags.Static | BindingFlags.Public)) {if (mi.Name == "Parse" && mi.GetParameters().Length == 1){ parseMethod = mi; break;} } if (parseMethod == null) {throw new ArgumentException(string.Format( "Type: {0} has not Parse static method!", type)); } return parseMethod.Invoke(null, new object[] { value }); } }}

最后这是用于测试的代码

百万格子广告网站源码,vscode. dev,ubuntu创建文件在桌面上,tomcat图标释义,qt sqlite如何使用,仪表盘图表插件,前端开发框架培训哪家好,爬虫是免费的吗,php 过滤sql,吉林360 seo,如何防止网站挂黑链,网页查询access数据库,电商网站模板免费lzw

public class Message { //{ "result": 100, "response": "Who are you?!", "id": 13185569, "msg": "OK." } [JsonField(Name = "result")] public int Result { get; set; } [JsonField(Name = "response")] public string Response { get; set; } [JsonField(Name = "id")] public int Id { get; set; } [JsonField(Name = "msg")] public string Msg { get; set; } }

class Program { static void Main(string[] args) { JsonToInstance util = new JsonToInstance(); string json = "\"response\":\"我是阿猫酱的小黄鸡\",\"id\":21231513,\"result\":100,\"msg\":\"OK.\""; Message m = util.ToInstance(json); } }

更多自定义实现Json字符串向C#对象转变的方法相关文章请关注PHP中文网!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。