如何判断对象中的属性的数据类型 突然想写一个ToJson的转换类,在应用中有一个实体类,其中有一个属性必须定义成集合在转换的时候需要在json中体现所有的数据var json = [{a:1,{c:3}}];如何在json转换的方法中判断这个属性是集合,之后遍历他 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充:是使用C#判断对象的某一个属性的类型,如果是list<T> 那么就对这个集合进行遍历最后拼接成:var json = [{a:1,b:{c:3}}];这种形式 难道CSDN上午没人看帖么...怎么每人回答,貌似高手10:00已经开始上班了啊 可遍历的都实现了IEnumerable接口的本身通过GetType()方法也可以获取属性的Type实例 谢谢4楼的回答按你的说法写了一个判断的代码if (objectValue is IEnumerable)有没有可能判断出具体的集合类型,比如:普通集合:List<string>对象集合:List<Object>因为对于这两种集合的遍历方式是不同的 foreach (object item in array) { jsonString += item + ","; //普通集合转换 jsonString +=ToJsonAll(item) + ",";//对象集合转换 }ToJsonAll(object jsonObject) 方法中有2句代码://用来获得参数对象的所有属性PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();//用来获取属性的类型,如果不是集合类型,这句会报错误,如何加判断呢?object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);调试代码地址:http://blog.csdn.net/liyb5619/archive/2010/06/21/5683577.aspx 上面写错了,更正//用来获取属性的类型,如果不是对象类型,就没有Get方法,这句会报错误,如何加判断呢?object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null); 你不需要判断集合 是 List<string> 还是 List<Object>你需要判断的是 集合中的子项 是什么类型。与 is 相似的操作符 还有一个, 你应该使用它 可以先使用PropertyInfo的CanRead和CanWrite属性判断或者判断获取的MethodInfo是否为nullpropertyInfo[i].GetGetMethod() 7楼说的对,是判断集合中的子项是什么类型,你说的与 is 相似的操作符是 typeof么?那么我该怎么判断子项是一个对象类型还是一个普通类型呢,请给点详细的提示,谢谢了 foreach (object item in array) { jsonString += item + ","; //普通集合转换 jsonString +=ToJsonAll(item) + ",";//对象集合转换 }=>foreach (object item in array) { if(item is string) { jsonString += item.ToString() + ","; //普通集合转换 } else { jsonString +=ToJsonAll(item) + ",";//对象集合转换 } }我本想说 as 操作符的,不过 is 就可以了。 如果你的List 中 不止 string 和 customClass 两种类型 ,那当前方案可能不适用。不过,我觉得 string 与 customClass 应该是够了。 判断类型typeof,is都是可以的 To : Sandy945 as 是转换用的吧,怎么能跟is一样呢,JAVA中as是比较用的按照目前的应用一个string类型是够用的,但我就想写一个万用转换类,呵呵,貌似我这个想法不太实际唉,忙乎了半天,网上原来有个开源的转换工具,据说比.net自带的好,试试 typeof gettype 这类的。 使用SizeChanged事件时,最小化托盘问题 各位大哥哥大姐姐帮帮忙啊... c#如何给动态添加的按钮添加事件 客户端调用存储过程时有的机器没反应,有的正常....急急急...求解 winform中窗体加载问题? 求个网络抓包的小程序 关于checkbox的问题.请赐教 oracle数据库的存储过程,安装的时候怎么制作安装程序? 在一个文本框中只有输入数字,winfrom FTP登陆问题 Excel-Dataset 为什么一直报错 richtextbox相邻两行的数据
最后拼接成:
var json = [{a:1,b:{c:3}}];
这种形式
怎么每人回答,貌似高手10:00已经开始上班了啊
本身通过GetType()方法也可以获取属性的Type实例
按你的说法写了一个判断的代码if (objectValue is IEnumerable)
有没有可能判断出具体的集合类型,比如:
普通集合:List<string>
对象集合:List<Object>因为对于这两种集合的遍历方式是不同的
foreach (object item in array)
{
jsonString += item + ","; //普通集合转换
jsonString +=ToJsonAll(item) + ",";//对象集合转换
}ToJsonAll(object jsonObject) 方法中有2句代码://用来获得参数对象的所有属性
PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();//用来获取属性的类型,如果不是集合类型,这句会报错误,如何加判断呢?
object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
调试代码地址:http://blog.csdn.net/liyb5619/archive/2010/06/21/5683577.aspx
object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
或者
判断获取的MethodInfo是否为null
propertyInfo[i].GetGetMethod()
7楼说的对,是判断集合中的子项是什么类型,你说的与 is 相似的操作符是 typeof么?那么我该怎么判断子项是一个对象类型还是一个普通类型呢,请给点详细的提示,谢谢了
foreach (object item in array)
{
jsonString += item + ","; //普通集合转换
jsonString +=ToJsonAll(item) + ",";//对象集合转换
}=>
foreach (object item in array)
{
if(item is string)
{
jsonString += item.ToString() + ","; //普通集合转换
}
else
{
jsonString +=ToJsonAll(item) + ",";//对象集合转换
}
}我本想说 as 操作符的,不过 is 就可以了。
按照目前的应用一个string类型是够用的,但我就想写一个万用转换类,呵呵,貌似我这个想法不太实际唉,忙乎了半天,网上原来有个开源的转换工具,据说比.net自带的好,试试