`
weishuwei
  • 浏览: 322046 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

json-lib包笔记

阅读更多
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[] { truefalsetrue };  
  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的开发包,提出来,大家探讨一下~!!!!
分享到:
评论
8 楼 mlin 2011-08-16  
不错不错,今天我也遇到了上面提到的第一个问题,看到你的文章才解决了,多谢多谢。
7 楼 laiseeme 2008-06-13  
andrew.yulong 写道
我如果体格bean里面包含一个set集合,转换json的时候会报错,应该怎么解决》

改写代码吧 
一般我反而是遇到返回值是set的就不生成json
因为是一对多关系经常不用加载
6 楼 laiseeme 2008-06-13  
什么时候讲讲和hibernate结合自动生成json的问题 很多帖子力聊着聊着就讨论起这个来了.
还有那些依赖包 确实很头疼,我就是找不到那个 不得已用了个旧的代替
5 楼 yefeng 2008-06-13  
刚用了JSON-lib,有不少地方不符合我的需求,就直接源码拿来,改了一下
4 楼 aninfeel 2008-06-12  
我做了个applet打印程序,和服务器通过json通信,觉得json-lib牵连太多,而且通过两次转换后对象数据并没有和原来的一致,所以后来干脆用了系列化,效果还不错。
3 楼 andrew.yulong 2008-06-12  
我如果体格bean里面包含一个set集合,转换json的时候会报错,应该怎么解决》
2 楼 shim 2007-12-20  
JSON让我觉得有一点不爽,
Resources resource=manageResourceDao.get(resource.getId());
JSONArray array = JSONArray.fromObject(resource); //此处出现异常

异常如下:
引用
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
at net.sf.json.JSONObject._fromBean(JSONObject.java:738)
at net.sf.json.JSONObject.fromObject(JSONObject.java:182)


于是我改成
Resources resource=manageResourceDao.get(resource.getId());
Resources res=new  Resources();
BeanUtils.copyProperties(res, resource);
			
JSONArray array = JSONArray.fromObject(res);


这样才可以了,觉得这样有些不爽,不知道有没更好的办法解决?
1 楼 katelin 2007-08-09  
第2点我不会报错

相关推荐

    json-lib 学习笔记 分享下

    json-lib 学习笔记 json-lib json

    《JSON-lib框架,转换JSON、XML不再困难》学习笔记

    NULL 博文链接:https://xuxiheng.iteye.com/blog/2233699

    json 学习笔记_20140116.pdf

    介绍了json的三个工具struts json,json_lib, jackson-mapper 的使用方法和一些常见错误处理

    JsonLib:ADVPL 中的 JSON 格式支持库

    JsonLib AdvPL 的 Json 库 使用这个库可以读取和写入 Json 格式,此外还可以以简单直观的方式搜索数据。 整个库是使用 ADVPL Object Orientation 概念开发的,因此如果您想对此有所了解,请查看源代码,它们简单...

    day023-xml解析笔记和代码.rar

    复制dom4j的jar包到lib文件夹中 3. 选中jar右键buildpath 4. 在测试类中使用dom4j解析XML。(今天开始学习别人的api) dom4j中使用到的方法: 1.创建SaxReader对象 SAXReader reader = new ...

    rollup-ts-lib-maker:使用Rollup和TypeScript创建库的模板入门

    笔记 此基本设置用于开发可以发布到NPM的库(不是应用程序)。显然,根据要创建的内容,您需要做一些额外的配置,但是至少您有一个基础。 (是的,这很乏味! :tired_face: ) 提醒 在发布到NPM之前,请不要忘记修改...

    scala-advanced:Scala先进

    scala-json 操作(json4s) 类库扩展 √ shapeless 泛型编程库 类库扩展 × scala-app-cats cats 库相关操作 类库扩展 × scala-resources-notes md格式笔记 提升 √ scala-resources-book scala-书籍 提升 √ 编码...

    高并发C 应用程序框架safapplicationframework.zip

    ./example/echo_sync/client5:增加子模块,配置conf/sails.json: 在modules里增加一行,name是子模块名,path是子模块动态库的路径性能测试一笔记本: T6400 @ 2.00GHz, cpu num:1, cpu cores:2 服务端和客户端都运行在...

    lib-docs:练马区病房相关资料档案

    lib-docs 练马区病房相关资料档案 目的 彼此共享与图书馆有关的资料的档案。 目的是为病房的居民提供审计和监督图书馆管理的信息支持。 特征 该Svelte应用基于 。 它可以在任何环境(例如Linux,Windows,Android...

    python 3.6 tkinter+urllib+json实现火车车次信息查询功能

    一、概述 妹子工作时需要大量地查询火车车次至南京的信息,包括该车次到达站(南京站or...python+tkinter实现界面,详见之前的学习笔记://www.jb51.net/article/131059.htm 最终效果图: 二、实现 1.界面读取待查询

    Code_Assessment:评估练习

    允许通过以下任一方式刷新数据/视图: • 刷新按钮 • 下拉刷新依赖/先决条件: 包含 appcombackv7 作为 lib 项目,jdk 1.7 和 android ADT 22 笔记**** 图像是从各种服务器下载的,具有各种尺寸,动态调整大小看...

    贪吃蛇大作战JAVA源码-awesome-python-modules:很棒的Python模块存储库和API列表

    笔记中准备了这个列表 网址: : : httpbin : 请求 oauthlib : 请求运行范围: 推特 : 特威通: urllib3 : 扭曲: 要求 : Pythonoauth2: Pythonoauth: bitly-api-python : PastebinAPI : PastebinPython : ...

    script-vdr:在虚拟桌面上放置Windows的脚本

    它存储了从应用程序名称(例如/usr/lib/iceweasel/iceweasel )到窗口数据字典的映射的JSON数据库。 执行后,它可以(1)检查正在运行的应用程序并将其添加到该数据库中,或者(2)使用该数据库将应用程序的窗口...

    webpack中CommonsChunkPlugin详细教程(小结)

    本文介绍了webpack中CommonsChunkPlugin详细教程(小结),分享给大家,也给自己留个笔记,具体如下: 1.demo结构: 2.package.json配置: { "name": "webpack-simple-demo", "version": "1.0.0", "description...

Global site tag (gtag.js) - Google Analytics