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. import net.sf.json.JSONArray;
  6. import net.sf.json.JSONObject;
  7. public class Json {
  8. public static void main(String[] args) {
  9. Json j = new Json();
  10. j.bean2json();
  11. }
  12. public void arr2json() {
  13. boolean[] boolArray = new boolean[] { truefalsetrue };
  14. JSONArray jsonArray = JSONArray.fromObject(boolArray);
  15. System.out.println(jsonArray);
  16. // prints [true,false,true]
  17. }
  18. public void list2json() {
  19. List list = new ArrayList();
  20. list.add("first");
  21. list.add("second");
  22. JSONArray jsonArray = JSONArray.fromObject(list);
  23. System.out.println(jsonArray);
  24. // prints ["first","second"]
  25. }
  26. public void createJson() {
  27. JSONArray jsonArray = JSONArray.fromObject("['json','is','easy']");
  28. System.out.println(jsonArray);
  29. // prints ["json","is","easy"]
  30. }
  31. public void map2json() {
  32. Map
  33. map.put("name", "json");
  34. map.put("bool", Boolean.TRUE);
  35. map.put("int", new Integer(1));
  36. map.put("arr", new String[] { "a", "b" });
  37. map.put("func", "function(i){ return this.arr[i]; }");
  38. JSONObject json = JSONObject.fromObject(map);
  39. System.out.println(json);
  40. // prints
  41. // ["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){
  42. // return this.arr[i]; }]
  43. }
  44. public void bean2json() {
  45. JSONObject jsonObject = JSONObject.fromObject(new MyBean());
  46. System.out.println(jsonObject);
  47. /*
  48. * prints
  49. * {"func1":function(i){ return this.options[i];
  50. * },"pojoId":1,"name":"json","func2":function(i){ return
  51. * this.options[i]; }}
  52. */
  53. }
  54. public void json2bean() {
  55. String json = "{name=/"json2/",func1:true,pojoId:1,func2:function(a){ return a; },options:['1','2']}";
  56. JSONObject jb = JSONObject.fromString(json);
  57. JSONObject.toBean(jb, MyBean.class);
  58. System.out.println();
  59. }
  60. }
操作的bean:
  1. import net.sf.json.JSONFunction;
  2. public class MyBean {
  3. private String name = "json";
  4. private int pojoId = 1;
  5. // private char[] options = new char[] { 'a', 'f' };
  6. private String func1 = "function(i){ return this.options[i]; }";
  7. private JSONFunction func2 = new JSONFunction(new String[] { "i" },
  8. "return this.options[i];");
  9. // getters & setters
  10. ......
  11. }

使用JSON的方法

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。

Json必需的包

commons-httpclient-3.1.jar
commons-lang-2.4.jar
commons-logging-1.1.1.jar
json-lib-2.2.3-jdk13.jar
ezmorph-1.0.6.jar
commons-collections-3.2.1.jar

以上包可以从

http://commons.apache.org/index.html

http://json-lib.sourceforge.net/

http://ezmorph.sourceforge.net/

http://morph.sourceforge.net/

http://www.docjar.com/

中下载到。

出现java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher错误是因为没有导入ezmorph.jar文件或版本不对。

出现java.lang.NoClassDefFoundError: org/apache/commons/collections/map/ListOrderedMap错误是因为没有导入commons-collections.jar文件或版本不对。

Java代码转换成json代码

1.       List集合转换成json代码

List list = new ArrayList();

list.add( "first" );

list.add( "second" );

JSONArray jsonArray2 = JSONArray.fromObject( list );

2.       Map集合转换成json代码

Map map = new HashMap();

map.put("name", "json");

map.put("bool", Boolean.TRUE);

map.put("int", new Integer(1));

map.put("arr", new String[] { "a", "b" });

map.put("func", "function(i){ return this.arr[i]; }");

JSONObject json = JSONObject.fromObject(map);

3.       Bean转换成json代码

JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

4.       数组转换成json代码

boolean[] boolArray = new boolean[] { truefalsetrue };

JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

5. 一般数据转换成json代码

JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

6.       beans转换成json代码

List list = new ArrayList();

JsonBean2 jb1 = new JsonBean2();

jb1.setCol(1);

jb1.setRow(1);

jb1.setValue("xx");

JsonBean2 jb2 = new JsonBean2();

jb2.setCol(2);

jb2.setRow(2);

jb2.setValue("");

list.add(jb1);

list.add(jb2);

JSONArray ja = JSONArray.fromObject(list);

json-lib包笔记的更多相关文章

  1. Json lib集成stucts2的使用方法 抛出 NestableRuntimeException异常的解决办法

    首先贴出struts 2.3.16需要导入的包 因为使用的是2.3 版本,必须要导入这个包,否则会报java.lang.NoClassDefFoundError: org/apache/commons ...

  2. BeanShell使用json.jar包处理Json数据

    环境准备 ①Jmeter版本 ,JDK ②前置条件:将json.jar包置于..\lib\下, 如果还是报错,可以将该jar包添加到测试计划的Library中:否则会报:Typed variable ...

  3. 关于程序中使用servlet-api.jar和jsp-api.jar与服务器lib包jar包冲突的问题

    问题描述:         程序中使用到javax.servlet.http.HttpServletRequest等类内容,然而这些类是依赖于tomcat容器lib包下的jar包,工程中导入这两个ja ...

  4. c# 生成json数据包

    json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...

  5. Json.Net学习笔记

    http://www.cnblogs.com/xiaojinhe2/archive/2011/10/28/2227789.html Newtonsoft.Json(Json.Net)学习笔记 http ...

  6. WebService使用JSON格式传递笔记+JQuery测试

    原文WebService使用JSON格式传递笔记+JQuery测试 因为一些因素,必须改写WebService,很传统,但是很多公司还在用.. 因为XML 的关系,不想让他传递数据的时候过度肥大,所以 ...

  7. arm的编译器里已经有C标准库的lib包了,android为啥还要自己再实现呢

    arm的编译器里已经有C标准库的lib包了,android为啥还要自己再实现呢 google自己搞的bionic libc来替代glibc想来是有原因的,本来glibc也是lgpl,应该也没有版权问题 ...

  8. json解包与json封包

    首先,对两个名词进行简单的说明: 1.NSData 用来存储二进制的数据类型.NSData类提供了一种简单的方式,它用来设置缓冲区.将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件.不变缓冲区(N ...

  9. 使用JsonConfig控制JSON lib序列化

    将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作.JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格 ...

  10. 普通Java Web项目为什么lib包要放在WEB-INF下

    首先一个项目要编译好之后才能部署到Tomcat中运行. Tomcat运行时如何找编译好的.class文件呢,其实Tomcat下的web项目有两个预置的classpath(就是能找到.class文件的入 ...

随机推荐

  1. js的等值比较规则

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness ES2015中有四种 ...

  2. jQuery EasyUI-DataGrid动态加载表头

    项目总结—jQuery EasyUI-DataGrid动态加载表头     目录(?)[-] 概要 实现 总结   概要 在前面两篇文章中,我们已经介绍了在jQuery EasyUI-DataGrid ...

  3. poj2387- Til the Cows Come Home(最短路)

    此为转载:http://blog.csdn.net/wangjian8006: 题目大意:有N个点,给出从a点到b点的距离,当然a和b是互相可以抵达的,问从1到n的最短距离 解题思路: 模版题,这题要 ...

  4. React Native踩坑之FlatList组件中的onEndReached

    最近在做一个RN项目,有使用到FlatList这样一个RN封装的组件去做上拉加载更多功能,在iOS和Android平台上,总结了以下几个遇到的问题及解决方案 1. 进入页面onReached开始就被触 ...

  5. IDEA导入eclipse项目并部署运行完整步骤(转发)

    首先说明一下:idea里的project相当于eclipse里的workspace,而idea里的modules相当于eclipse里的project 1.File-->Import Proje ...

  6. Servlet的基本架构

    Servlet的基本架构: package test; import java.io.IOException; import javax.servlet.ServletException; impor ...

  7. Django基础-Lesson1

    web框架概念 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统. 对于所有的Web应用,本质上其实就是一个socket服务端, ...

  8. Mistakes(Updating)

    1.当调试时发现无法正常调用函数时,检查是否发生爆栈 对于每个栈仅有4MB的空间,开int只能开大约5*10^5. 大数组一定要开全局变量 2.当long long=int*int时会爆int,一定要 ...

  9. [Arc081F]Flip and Rectangles

    [Arc081F]Flip and Rectangles 试题分析 首先考虑如何操作,发现我们只会选若干行和若干列来进行一次取反. 这个东西相当于什么呢?相当于交点不变,然后这些行和这些列的其它点取反 ...

  10. java的多线程之四(线程的操作)

    本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17560467,转载请注明. 线程中断    线程中断涉及到三个方法,如下 ...