JSON学习

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. importjava.util.ArrayList;
  2. importjava.util.HashMap;
  3. importjava.util.List;
  4. importjava.util.Map;
  5. importnet.sf.json.JSONArray;
  6. importnet.sf.json.JSONObject;
  7. publicclassJson{
  8. publicstaticvoidmain(String[]args){
  9. Jsonj=newJson();
  10. j.bean2json();
  11. }
  12. publicvoidarr2json(){
  13. boolean[]boolArray=newboolean[]{true,false,true};
  14. JSONArrayjsonArray=JSONArray.fromObject(boolArray);
  15. System.out.println(jsonArray);
  16. //prints[true,false,true]
  17. }
  18. publicvoidlist2json(){
  19. Listlist=newArrayList();
  20. list.add("first");
  21. list.add("second");
  22. JSONArrayjsonArray=JSONArray.fromObject(list);
  23. System.out.println(jsonArray);
  24. //prints["first","second"]
  25. }
  26. publicvoidcreateJson(){
  27. JSONArrayjsonArray=JSONArray.fromObject("['json','is','easy']");
  28. System.out.println(jsonArray);
  29. //prints["json","is","easy"]
  30. }
  31. publicvoidmap2json(){
  32. Map
  33. map.put("name","json");
  34. map.put("bool",Boolean.TRUE);
  35. map.put("int",newInteger(1));
  36. map.put("arr",newString[]{"a","b"});
  37. map.put("func","function(i){returnthis.arr[i];}");
  38. JSONObjectjson=JSONObject.fromObject(map);
  39. System.out.println(json);
  40. //prints
  41. //["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){
  42. //returnthis.arr[i];}]
  43. }
  44. publicvoidbean2json(){
  45. JSONObjectjsonObject=JSONObject.fromObject(newMyBean());
  46. System.out.println(jsonObject);
  47. /*
  48. *prints
  49. *{"func1":function(i){returnthis.options[i];
  50. *},"pojoId":1,"name":"json","func2":function(i){return
  51. *this.options[i];}}
  52. */
  53. }
  54. publicvoidjson2bean(){
  55. Stringjson="{name=\"json2\",func1:true,pojoId:1,func2:function(a){returna;},options:['1','2']}";
  56. JSONObjectjb=JSONObject.fromString(json);
  57. JSONObject.toBean(jb,MyBean.class);
  58. System.out.println();
  59. }
  60. }
操作的bean:
  1. importnet.sf.json.JSONFunction;
  2. publicclassMyBean{
  3. privateStringname="json";
  4. privateintpojoId=1;
  5. //privatechar[]options=newchar[]{'a','f'};
  6. privateStringfunc1="function(i){returnthis.options[i];}";
  7. privateJSONFunctionfunc2=newJSONFunction(newString[]{"i"},
  8. "returnthis.options[i];");
  9. //getters&setters
  10. ......
  11. }


题外话: 这个我对json-lib包的初次尝试,希望对大家有所帮助,另外大家有谁用过其它处理json的开发包,提出来,大家探讨一下~!!!!

你可能感兴趣的:(apache,thread,json,bean,.net)