当前位置: 代码迷 >> JavaScript >> JSON: property "xxx" has no getter method in class ""
  详细解决方案

JSON: property "xxx" has no getter method in class ""

热度:1221   发布时间:2012-12-19 14:13:14.0
JSON: property "xxx" has no getter method in class "..."
Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'name' has no getter method
解决:声明bean为public class xxx,必须是public,我用默认类型(class xxx)都不行
json-lib.jar开发包使用:

依赖包:
commons-beanutils.jar;
commons-httpclient.jar;
commons-lang.jar;
ezmorph.jar;不少人使用时会提示net.sf.ezmorph.xxx找不到,就是缺这个:
morph-1.0.1.jar

相关链接:
http://json-lib.sourceforge.net/
http://ezmorph.sourceforge.net/
http://morph.sourceforge.net/

使用过程中问题:
1,把bean转化为json格式时老提示如下错误:
Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'name' has no getter method
解决:声明bean为public class xxx,必须是public,我用默认类型(class xxx)都不行

2,Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.lang.ArrayUtils.toObject([C)[Ljava/lang/Character;
原因:定义属性如下:private char[] options = new char[] { 'a', 'f' };好像不能处理这种类型的

3, private String func1 = "function(i){ return this.options[i]; }";
?? 和
?? private JSONFunction func2 = new JSONFunction(new String[] { "i" },
???? "return this.options[i];");
?? 转换后显示结果差不多:
?? {"func1":function(i){ return this.options[i];,"func2":function(i){ return this.options[i]; }}

测试类:
?
  1. import?java.util.ArrayList;??
  2. import?java.util.HashMap;??
  3. import?java.util.List;??
  4. import?java.util.Map;??
  5. ??
  6. import?net.sf.json.JSONArray;??
  7. import?net.sf.json.JSONObject;??
  8. ??
  9. public?class?Json?{??
  10. ????public?static?void?main(String[]?args)?{??
  11. ????????Json?j?=?new?Json();??
  12. ????????j.bean2json();??
  13. ????}??
  14. ??
  15. ????public?void?arr2json()?{??
  16. ????????boolean[]?boolArray?=?new?boolean[]?{?true,?false,?true?};??
  17. ????????JSONArray?jsonArray?=?JSONArray.fromObject(boolArray);??
  18. ????????System.out.println(jsonArray);??
  19. ????????//?prints?[true,false,true]??
  20. ????}??
  21. ??
  22. ????public?void?list2json()?{??
  23. ????????List?list?=?new?ArrayList();??
  24. ????????list.add("first");??
  25. ????????list.add("second");??
  26. ????????JSONArray?jsonArray?=?JSONArray.fromObject(list);??
  27. ????????System.out.println(jsonArray);??
  28. ????????//?prints?["first","second"]??
  29. ????}??
  30. ??
  31. ????public?void?createJson()?{??
  32. ????????JSONArray?jsonArray?=?JSONArray.fromObject("['json','is','easy']");??
  33. ????????System.out.println(jsonArray);??
  34. ????????//?prints?["json","is","easy"]??
  35. ????}??
  36. ??
  37. ????public?void?map2json()?{??
  38. ????????Map
  39. ????????map.put("name",?"json");??
  40. ????????map.put("bool",?Boolean.TRUE);??
  41. ????????map.put("int",?new?Integer(1));??
  42. ????????map.put("arr",?new?String[]?{?"a",?"b"?});??
  43. ????????map.put("func",?"function(i){?return?this.arr[i];?}");??
  44. ??
  45. ????????JSONObject?json?=?JSONObject.fromObject(map);??
  46. ????????System.out.println(json);??
  47. ????????//?prints??
  48. ????????//?["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){??
  49. ????????//?return?this.arr[i];?}]??
  50. ????}??
  51. ??
  52. ????public?void?bean2json()?{??
  53. ????????JSONObject?jsonObject?=?JSONObject.fromObject(new?MyBean());??
  54. ????????System.out.println(jsonObject);??
  55. ????????/*?
  56. ?????????*?prints??
  57. ?????????*?{"func1":function(i){?return?this.options[i];?
  58. ?????????*?},"pojoId":1,"name":"json","func2":function(i){?return?
  59. ?????????*?this.options[i];?}}?
  60. ?????????*/??
  61. ????}??
  62. ??
  63. ????public?void?json2bean()?{??
  64. ????????String?json?=?"{name=\"json2\",func1:true,pojoId:1,func2:function(a){?return?a;?},options:['1','2']}";??
  65. ????????JSONObject?jb?=?JSONObject.fromString(json);??
  66. ????????JSONObject.toBean(jb,?MyBean.class);??
  67. ????????System.out.println();??
  68. ????}??
  69. }??

操作的bean:
?
  1. import?net.sf.json.JSONFunction;??
  2. ??
  3. public?class?MyBean?{??
  4. ????private?String?name?=?"json";??
  5. ????private?int?pojoId?=?1;??
  6. ????//?private?char[]?options?=?new?char[]?{?'a',?'f'?};??
  7. ????private?String?func1?=?"function(i){?return?this.options[i];?}";??
  8. ????private?JSONFunction?func2?=?new?JSONFunction(new?String[]?{?"i"?},??
  9. ????????????"return?this.options[i];");??
  10. ??
  11. ????//?getters?&?setters??
  12. ????......??
  13. }??

题外话: 这个我对json-lib包的初次尝试,希望对大家有所帮助,另外大家有谁用过其它处理json的开发包,提出来,大家探讨一下~!!!!
1 楼 宋建勇 2012-07-15  
  相关解决方案