当前位置: 代码迷 >> JavaScript >> 基于json-lib.jar包Json范例程序(转)
  详细解决方案

基于json-lib.jar包Json范例程序(转)

热度:751   发布时间:2012-10-24 14:15:58.0
基于json-lib.jar包Json实例程序(转)

基于json-lib.jar包Json实例程序

?
创建JSONArray的常用四种方法
?
1.从头或者从零开始,创建一个JSONArray(Creating a JSONArray from scratch)
实例1:?
Java代码??收藏代码
  1. JSONArray?jsonArray?=?new?JSONArray().element("JSON").element("1").element("2.0").element("true");???
  2. assertEquals("JSON",?jsonArray.getString(0));???
  3. assertEquals(1,?jsonArray.getInt(1));???
  4. assertEquals(2.0d,?jsonArray.getDouble(2),?0d);???
  5. assertTrue(jsonArray.getBoolean(3));???
???
3.使用一个Collection来创建一个JSONArray(Creating a JSONArray from a Collection)
实例1:
??
Java代码??收藏代码
  1. List?list?=?new?ArrayList();??
  2. ?list.add(?"JSON"?);???
  3. list.add(?"1"?);???
  4. list.add(?"2.0"?);???
  5. list.add(?"true"?);???
  6. JSONArray?jsonArray?=?(JSONArray)?JSONSerializer.toJSON(?list?);?assertEquals(?"JSON",?jsonArray.getString(0)?);???
  7. assertEquals(?1,?jsonArray.getInt(1)?);???
  8. assertEquals(?2.0d,?jsonArray.getDouble(2),?0d?);???
  9. assertTrue(?jsonArray.getBoolean(3)?);???
?
???
4.使用一个Array来创建一个JSONArray(Creating a JSONArray from an array)
实例1:
Java代码??收藏代码
  1. Object[]?array?=?new?Object[]?{?"JSON",?1,?2.0,?true?};???
  2. JSONArray?jsonArray?=?(JSONArray)?JSONSerializer.toJSON(array);?assertEquals("JSON",?jsonArray.getString(0));??
  3. assertEquals(1,?jsonArray.getInt(1));???
  4. assertEquals(2.0d,?jsonArray.getDouble(2),?0d);???
  5. assertTrue(jsonArray.getBoolean(3));???
  6. ??
  7. //实例2:???
  8. Object[]?array?=?new?Object[]?{?"JSON",?1,?2.0,?true?};???
  9. JSONArray?jsonArray?=?JSONArray.fromObject(array);???
  10. assertEquals("JSON",?jsonArray.getString(0));???
  11. assertEquals(1,?jsonArray.getInt(1));???
  12. assertEquals(2.0d,?jsonArray.getDouble(2),?0d);???
  13. assertTrue(jsonArray.getBoolean(3));???
????
由此可见,无论要转换的源是哪种类型,都可以使用(JSONArray) JSONSerializer.toJSON()或JSONArray.fromObject()来转换;
?
?? 常用的三种扩展功能?
?
1.使用一个JSON格式化字符串来创建一个JSONFunction(JavaScript functions)??
实例:
Java代码??收藏代码
  1. String?str?=?"{func:?function(?param?){?doSomethingWithParam(param);?}}";???
  2. JSONObject?jsonObject?=?(JSONObject)?JSONSerializer.toJSON(str);?JSONFunction?func?=?(JSONFunction)?jsonObject.get("func");?ArrayAssertions.assertEquals(new?String[]?{?"param"?},?func.getParams());???
  3. assertEquals("doSomethingWithParam(param);",?func.getText());???
  4. ????
?
注:函数的写法要注意function(){},参数param是可选的!

2.排除一个JSON格式化字符串的某些属性(Exclude properties)
实例:
???
Java代码??收藏代码
  1. String?str?=?"{'string':'JSON',?'integer':?1,?'double':?2.0,?'boolean':?true}";???
  2. JsonConfig?jsonConfig?=?new?JsonConfig();???
  3. jsonConfig.setExcludes(new?String[]?{?"double",?"boolean"?});?JSONObject?jsonObject?=?(JSONObject)?JSONSerializer.toJSON(str,?jsonConfig);???
  4. assertEquals("JSON",?jsonObject.getString("string"));???
  5. assertEquals(1,?jsonObject.getInt("integer"));??
  6. assertFalse(jsonObject.has("double"));???
  7. assertFalse(jsonObject.has("boolean"));???
????
3.排除一个JSON格式化字符串的某些属性,使用过滤器(Exclude properties (with filters)
实例:
??
Java代码??收藏代码
  1. String?str?=?"{'string':'JSON',?'integer':?1,?'double':?2.0,?'boolean':?true}";??
  2. ?JsonConfig?jsonConfig?=?new?JsonConfig();?jsonConfig.setJsonPropertyFilter(new?PropertyFilter()?{???
  3. ???public?boolean?apply(Object?source,?String?name,?Object?value)?{??
  4. ?????????if?("double".equals(name)?||?"boolean".equals(name))???
  5. ??????????{?return?true;?}??
  6. ??????????????return?false;?}?});???
  7. JSONObject?jsonObject?=?(JSONObject)?JSONSerializer.toJSON(str,?jsonConfig);???
  8. assertEquals("JSON",?jsonObject.getString("string"));???
  9. assertEquals(1,?jsonObject.getInt("integer"));???
  10. assertFalse(jsonObject.has("double"));???
  11. assertFalse(jsonObject.has("boolean"));???
?
?

JSONObject-Java常用的四种用法
1.JSONObject to DynaBean

Java代码??收藏代码
  1. String?json?=?"{name=\"json\",bool:true,int:1,double:2.2}";?JSONObject?jsonObject?=?JSONObject.fromObject(json);?//抽象的写法:DynaBean?bean?=?(DynaBean)?JSONSerializer.toJava(?jsonObject?);?Object?bean?=?JSONObject.toBean(jsonObject);???
  2. //Object?bean1?=?JSONSerializer.toJava(jsonObject);???
  3. assertEquals(jsonObject.get("name"),?PropertyUtils.getProperty(bean,?"name"));??
  4. ?assertEquals(jsonObject.get("bool"),?PropertyUtils.getProperty(bean,?"bool"));???
  5. assertEquals(jsonObject.get("int"),?PropertyUtils.getProperty(bean,?"int"));???
  6. assertEquals(jsonObject.get("double"),?PropertyUtils.getProperty(bean,?"double"));???
  7. ??
  8. ???

?

?2.JSONObject to JavaBean

Java代码??收藏代码
  1. String?json?=?"{name:\"zhangsan\",age:25,hight:1.72,sex:true}";?JSONObject?jsonObject?=?JSONObject.fromObject(json);???
  2. UserBean?bean?=?(UserBean)?JSONObject.toBean(jsonObject,?UserBean.class);???
  3. System.out.println(jsonObject);???

?

?


3.JSONArray to List

Java代码??收藏代码
  1. String?json?=?"[\"first\",\"second\"]";???
  2. JSONArray?jsonArray?=?(JSONArray)?JSONSerializer.toJSON(json);??
  3. ?List?output?=?(List)?JSONSerializer.toJava(jsonArray);???

????
4.JSONArray to array

?

?

Java代码??收藏代码
  1. String?json?=?"[\"first\",\"second\"]";??
  2. ?JSONArray?jsonArray?=?(JSONArray)?JSONSerializer.toJSON(json);?JsonConfig?jsonConfig?=?new?JsonConfig();???
  3. jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);???
  4. Object[]?output?=?(Object[])?JSONSerializer.toJava(jsonArray,?jsonConfig);???
  5. Object[]?expected?=?new?Object[]?{?"first",?"second"?};?ArrayAssertions.assertEquals(expected,?output);????
  6. ???

?

理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()

???
2.使用一个JSON格式化字符串来创建一个JSONArray(Creating a JSONArray from a JSON formatted string)??
实例1:
??
Java代码??收藏代码
  1. String?str?=?"['JSON',?1,?2.0,?true]";?//注意该字符串的格式"[?,?]"?JSONArray?jsonArray?=?(JSONArray)?JSONSerializer.toJSON(?str?);?assertEquals(?"JSON",?jsonArray.getString(0)?);???
  2. assertEquals(?1,?jsonArray.getInt(1)?);???
  3. assertEquals(?2.0d,?jsonArray.getDouble(2),?0d?);???
  4. assertTrue(?jsonArray.getBoolean(3)?);???
????

?List<String> list = new ArryList<String>(); list.add("a"); list.add("b"); Map<String,List<String>> map = new HashMap<String,List<String>>(); map.put("list",list); MessageUtils.outputJSONResult(JSONObject.fromObject(map).toString(), response); public class MessageUtils { public static void outputJSONResult(String result, HttpServletResponse response) { try { response.setHeader("ContentType", "text/json"); response.setCharacterEncoding("utf-8"); PrintWriter pw = response.getWriter(); pw.write(result); pw.flush(); pw.close(); } catch (IOException e) { e.printStackTrace(); } }

  相关解决方案