• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 自定义实现Json字符串向C#对象转变的方法

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了自定义json,微信自定义菜单json,自定义字符串,自定义字符串类,自定义连接字符串等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
    }
}
</div>
接下来是这个转换工具中的核心代码,主要是分解并且分析Json字符串中key与value, 并且通过反射获得对象中的各个对应属性并且赋值。

            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<string ,string> 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
                | Bindin

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-28C#使用UdpClient类进行简单通信的实例
  • 2017-05-28C#自定义基于控制台的Timer实例
  • 2017-05-28C#中的lock、Monitor、Mutex学习笔记
  • 2017-05-28C#文件断点续传实现方法
  • 2017-05-28C#中的let字句应用示例
  • 2017-05-28C# 设置系统日期格式的方法
  • 2017-05-28C#动态对象(dynamic)详解(实现方法和属性的动态)
  • 2017-05-28C#使用系统方法发送异步邮件完整实例
  • 2017-05-28C# 禁用鼠标中间键的方法
  • 2017-05-28C#定时器和随机数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#图像处理之图像均值方差计算的方法
    • C#中判断本地系统的网络连接状态的方法
    • 如何应用C#实现UDP的分包组包
    • C#中的let字句应用示例
    • 浅谈关于C#的垃圾回收机制
    • c# 方法可变数量的参数
    • FTPClientHelper辅助类 实现文件上传,目录操作,下载等操作
    • c#的treeview绑定和获取值的方法
    • C#字符串数组转换为整形数组的方法
    • C#网络编程基础之进程和线程详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有