Flex反射得到属性和属性的值
来源:互联网 发布:淘宝主营占比怎么提高 编辑:程序博客网 时间:2024/06/05 19:34
今天要写一个生成json的方法,目的是将VO对象中的所有公共属性和值转换成一个json对象,这个类中20多个属性,手动拼的话,是个体力活,并且有其它的对象也要转成json,还要手动拼,脑袋里最先想到的就是反射。
我们知道,在java中,通过反射可以得到一个类中的所有信息,属性、方法、接口、注解等等,那么在flex中是不是也是如此呢?
随后google之,锁定了describeType方法,这是一个flash.utils下的公共方法,通过它也可以达到java中类似的效果。
下表描述了由 describeType()
生成的 XML 对象的某些标签和属性(返回的所有类和接口名称均采用完全限定的格式):
<type>
XML 对象的根标签。 nameActionScript 对象的数据类型的名称。 baseActionScript 对象的定义类的直接超类。如果 ActionScript 对象是类对象,则值为 Class
。 isDynamic如果 ActionScript 对象的定义类是动态的,则为 true
;否则为 false
。如果 ActionScript 对象是类对象,则值为 true
,因为 Class 类是动态的。 isFinal如果 ActionScript 对象的定义类是最终类,则为 true
;否则为 false
。 isStatic如果 ActionScript 对象是类对象或构造函数,则为 true
;否则为 false
。此属性之所以名为 isStatic
,原因是:如果此属性为 true
,则未嵌套在 factory
标记内的任何标签都是静态的。<extendsClass>
ActionScript 对象的定义类的每个超类都有一个单独的 extendsClass
标签。 typeActionScript 对象的定义类扩展的超类的名称。<implementsInterface>
ActionScript 对象的定义类或其任何超类实现的每个接口都有一个单独的 implementsInterface
标签。 typeActionScript 对象的定义类实现的接口的名称。<accessor>
存取器是 getter 和 setter 函数定义的一个属性。 name存取器的名称。 access属性的访问权限。可能的值包括 readonly
、writeonly
和 readwrite
。 type属性的数据类型。 declaredBy包含关联的 getter 或 setter 函数的类。<constant>
常量是用 const
语句定义的一个属性。 name常量的名称。 type常量的数据类型。<method>
方法是作为类定义的一部分声明的函数。 name方法的名称。 declaredBy包含方法定义的类。 returnType方法的返回值的数据类型。<parameter>
方法定义的每个参数都有一个单独的 parameter
标签。此标签始终嵌套在 <method>
标签内。 index一个数字,对应于参数在方法的参数列表中出现的顺序。第一个参数的值为 1。 type参数的数据类型。 optional如果参数是可选参数,则为 true
;否则为 false
。<variable>
变量是用 var
语句定义的一个属性。 name变量的名称。 type变量的数据类型。<factory>
如果 ActionScript 对象是类对象或构造函数,则所有实例属性和方法均嵌套在此标签内。如果 <type>
标签的 isStatic
属性为 true
,则未嵌套在 <factory>
标签内的所有属性和方法都是静态的。只有在 ActionScript 对象是类对象或构造函数时,此标签才会出现。 该方法有两种使用方式,第一种,传入的参数是对象,这样可以得到普通属性和方法,不能得到静态属性和方法,第二种,传入的参数是类,这样可以得到所有的属性和方法,不包括私有的。针对我的需求,我使用第一种方式,获得它返回的variable标签,代码如下:
- /** 生成传入对象属性和值对应的json对象,对象中绑定的属性获取不到,返回的json带{},对象为null,返回"" */
- public static function getOneJsonObject(obj:Object):String
- {
- if(obj == null)
- {
- return "";
- }
- var jsonInfo:String = "{";
- // 反射出传入对象的属性
- var properties:XMLList = describeType(obj).variable;
- for each(var propertyInfo:XML in properties)
- {
- var propertyName:String = propertyInfo.@name;
- jsonInfo += "\"" + propertyName + "\":\"" + obj[propertyName] + "\",";
- }
- jsonInfo = jsonInfo.substring(0, jsonInfo.length - 1);
- jsonInfo += "}"
- return jsonInfo;
- }
经过实验,describeType不能获取[Bindable]的属性,这样就可以生成一个传入对象的json字符串了。如果想要得到类其它信息,就更换variable标签即可,对这个方法的使用详见官方API。
- Flex反射得到属性和属性的值
- Flex反射得到属性和属性的值
- 利用反射得到属性的值
- Java反射得到属性的值和设置属性的值
- Java反射得到属性的值和设置属性的值
- Java反射得到属性的值和设置属性的值
- Java反射得到属性的值和设置属性的值
- Java反射得到属性的值和设置属性的值
- Java通过反射得到属性的值和设置属性的值
- Java反射得到属性的值和设置属性的值
- java反射得到类的属性名和属性值并且放入Map中
- 反射得到指定属性值
- java 通过反射机制得到类的属性和方法
- Object get["属性"]; java反射技术通过对象和属性名得到属性值
- 用反射得到类名和属性值
- java用反射得到对象的属性值
- java反射技术通过对象和属性名得到属性值
- java反射得到类对象,并且得到类的属性
- C语言深度解剖笔记
- 当TextView或者EditView的内容发生变化时,其他组件及时给予响应时,我们可以使用TextWatcher来实现。
- 为什么要做软件过程改进工程师
- 骑自行车游北京
- pe文件解析:读取pe信息获取文件资源
- Flex反射得到属性和属性的值
- sql查出数据是long类型
- 线程池
- ecc错误的处理方式-ECC_CorrectData问题
- suse linux oracle自动启动
- Eclipse 配置tomcat访问http://localhost:8080出现404
- c++ string与字符串之间的转换
- 使用中科院ICTCLAS构建自己分词器中用到的public String readerToString(Reader reader)
- android 4.0 wifi-direct 实现分析-supplicant部分