基于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"12.0true };   
  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"12.0true };   
  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(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值