创建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,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",0d); assertTrue(jsonArray.getBoolean(3)); //实例2: Object[] array = new Object[] { "JSON",true }; JSONArray jsonArray = JSONArray.fromObject(array); assertEquals("JSON",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','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; } return false; } }); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str,jsonObject.getInt("integer")); assertFalse(jsonObject.has("double")); assertFalse(jsonObject.has("boolean")); JSONObject-Java常用的四种用法 1.JSONObject to DynaBean Java代码 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); //Object bean1 = JSONSerializer.toJava(jsonObject); assertEquals(jsonObject.get("name"),PropertyUtils.getProperty(bean,"name")); assertEquals(jsonObject.get("bool"),"bool")); assertEquals(jsonObject.get("int"),"int")); assertEquals(jsonObject.get("double"),"double")); 2.JSONObject to JavaBean Java代码 String json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}"; JSONObject jsonObject = JSONObject.fromObject(json); UserBean bean = (UserBean) JSONObject.toBean(jsonObject,UserBean.class); System.out.println(jsonObject); 3.JSONArray to List Java代码 String json = "[\"first\",\"second\"]"; JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json); List output = (List) JSONSerializer.toJava(jsonArray); 4.JSONArray to array Java代码 String json = "[\"first\",\"second\"]"; JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY); Object[] output = (Object[]) JSONSerializer.toJava(jsonArray,jsonConfig); Object[] expected = new Object[] { "first","second" }; ArrayAssertions.assertEquals(expected,output); 理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>() 2.使用一个JSON格式化字符串来创建一个JSONArray(Creating a JSONArray from a JSON formatted string) 实例1: Java代码 String str = "['JSON',true]"; //注意该字符串的格式"[,]" JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( str ); assertEquals( "JSON",0d ); assertTrue( jsonArray.getBoolean(3) ); Java代码 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(); } }

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...