日期:2014-05-16  浏览次数:20434 次

创建JSONArray的常用四种方法
创建JSONArray的常用四种方法

1.从头或者从零开始,创建一个JSONArray(Creating a JSONArray from scratch)
实例1:


Java代码 
JSONArray jsonArray = new JSONArray().element("JSON").element("1").element("2.0").element("true");  
assertEquals("JSON", jsonArray.getString(0));  
assertEquals(1, jsonArray.getInt(1));  
assertEquals(2.0d, jsonArray.getDouble(2), 0d);  
assertTrue(jsonArray.getBoolean(3));  


3.使用一个Collection来创建一个JSONArray(Creating a JSONArray from a Collection)
实例1:

Java代码 
List list = new ArrayList(); 
list.add( "JSON" );  
list.add( "1" );  
list.add( "2.0" );  
list.add( "true" );  
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( list ); assertEquals( "JSON", jsonArray.getString(0) );  
assertEquals( 1, jsonArray.getInt(1) );  
assertEquals( 2.0d, jsonArray.getDouble(2), 0d );  
assertTrue( jsonArray.getBoolean(3) );  


4.使用一个Array来创建一个JSONArray(Creating a JSONArray from an array)
实例1:

Java代码 
Object[] array = new Object[] { "JSON", 1, 2.0, true };  
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(array); assertEquals("JSON", jsonArray.getString(0)); 
assertEquals(1, jsonArray.getInt(1));  
assertEquals(2.0d, jsonArray.getDouble(2), 0d);  
assertTrue(jsonArray.getBoolean(3));  
 
//实例2:  
Object[] array = new Object[] { "JSON", 1, 2.0, true };  
JSONArray jsonArray = JSONArray.fromObject(array);  
assertEquals("JSON", jsonArray.getString(0));  
assertEquals(1, jsonArray.getInt(1));  
assertEquals(2.0d, jsonArray.getDouble(2), 0d);  
assertTrue(jsonArray.getBoolean(3));  


由此可见,无论要转换的源是哪种类型,都可以使用(JSONArray) JSONSerializer.toJSON()或JSONArray.fromObject()来转换;

常用的三种扩展功能

1.使用一个JSON格式化字符串来创建一个JSONFunction(JavaScript functions) 
实例:

Java代码 
String str = "{func: function( param ){ doSomethingWithParam(param); }}";  
JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str); JSONFunction func = (JSONFunction) jsonObject.get("func"); ArrayAssertions.assertEquals(new String[] { "param" }, func.getParams());  
assertEquals("doSomethingWithParam(param);", func.getText());  

 
注:函数的写法要注意function(){},参数param是可选的!

2.排除一个JSON格式化字符串的某些属性(Exclude properties)
实例:

Java代码 
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";  
JsonConfig jsonConfig = new JsonConfig();  
jsonConfig.setExcludes(new String[] { "double", "boolean" }); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str, jsonConfig);  
assertEquals("JSON", jsonObject.getString("string"));  
assertEquals(1, jsonObject.getInt("integer")); 
assertFalse(jsonObject.has("double"));  
assertFalse(jsonObject.has("boolean"));  


3.排除一个JSON格式化字符串的某些属性,使用过滤器(Exclude properties (with filters)
实例:
Java代码 
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}"; 
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setJsonPropertyFilter(new PropertyFilter() {  
   public boolean apply(Object source, String name, Object value) { 
         if ("double".equals(name) || "boolean".equals(name))  
          { return true; }&n