转换时Bean所要求的:
- 被转换的Bean必需是public的。
- Bean被转换的属性一定要有对应的get方法,且一定要是public的。
- Bean中不能用引用自身的this的属性,否则运行时出现et.sf.json.JSONException: There is a cycle in the hierarchy!异常
- json-lib包转换时,不能以null为键名,否则运行报net.sf.json.JSONException:java.lang.NullPointerException:JSON keys must not be null nor the 'null' string.
- json-lib包转换时, 转换成XML元素key的名字要符合XML元素标签的命名规则,否则会报nu.xom.IllegalNameException: NCNames cannot start with the character 25异常
转换时问题:
-
如果某个Bean中存在存放数组的Map属性,则使用org.json包中的JSONObject直接封装时得不到正确的JSON,要用JSONArray对数组进行封装处理,否则为转换JavaScript中的空的对象{},但能使用json-lib包很好地解决这一问题
两种包的比较:
- json-lib包比org.json要易使用些,至少没有烦人的JSONExcetipn捕获异常了。
- json-lib对Bean的支持比org.json要强,特别是对bean中内嵌属性的支持较好。
- commons-beanutils-1.8.0.jar
- commons-collections-3.2.1.jar
- commons-lang-2.4.jar
- commons-logging-1.1.1.jar
- ezmorph-1.0.6.jar
- json-lib-2.3-jdk15.jar
- xom-1.2.2.jar
- 实例所用到的三个Bean
使用org.json进行转换