flex与java间用json传输数据 1.从java到flex,将一个map或对象/自定义对象转为String,这里用HttpServlet java端 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Map map = new HashMap<String, Object>(); map.put("name", "wxj"); map.put("age", 20); map.put("tall", "163"); //将一个map转换为一个JSON对象 JSONObject object = JSONObject.fromObject(map); System.out.println("json object: " + object); out.println(object); out.flush(); out.close(); } flex端 <mx:HTTPService id="testjson" url="http://localhost:8080/fsh2/servlet/TestJsonServlet" method="POST" result="jsonResult(event)"/> public function jsonResult(event:ResultEvent):void{ var person:Object = JSON.decode(testjson.lastResult.toString()); json1.text = person.name + "," + person.age + "," + person.tall; } 2.从java到flex,将一个map或自定义对象转为String,这里用RemoteObject java端 /** * 将一个map或对象转为String * @param id * @return */ public String getUser(int id){ Map map = new HashMap<String, Object>(); if(id == 1){ map.put("name", "wxj"); map.put("age", 20); map.put("tall", "163"); return JSONObject.fromObject(map).toString(); }else { User user = new User(); user.setId(100); user.setUserName("中国"); user.setPwd("哈哈..."); return JSONObject.fromObject(user).toString(); } flex端 <mx:RemoteObject id="userRO" destination="UserServer" > <mx:method name="getUser" result="userResult(event)"/> </mx:RemoteObject> public function userResult(event:ResultEvent):void{ var person:Object = JSON.decode(event.result.toString()); json2.text = person.id + "," + person.userName + "," + person.pwd; } 3.从java到flex,将一个List转换为String,这里用RemoteObject java端 /** * 将一个List转换为String返回 * @return */ public String getUsers(){ List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setId(1); user1.setUserName("wxj"); user1.setPwd("wxj1111"); userList.add(user1); User user2 = new User(); user2.setId(1); user2.setUserName("zs"); user2.setPwd("zs23222"); userList.add(user2); User user3 = new User(); user3.setId(1); user3.setUserName("ls"); user3.setPwd("lisi12312"); userList.add(user3); return JSONArray.fromObject(userList).toString(); } flex端 <mx:RemoteObject id="userRO" destination="UserServer" > <mx:method name="getUsers" result="usersResult(event)"/> </mx:RemoteObject> public function usersResult(event:ResultEvent):void{ //先转换为数组 var acc:Array = JSON.decode(event.result.toString()) as Array; //dg是一个DataGrid dg.dataProvider = new ArrayCollection(acc); } 4.从flex到java flex端 <mx:RemoteObject id="userRO" destination="UserServer" > <mx:method name="addUser" result="addUserResult(event)"/> </mx:RemoteObject> /** * 添加用户 */ public function addUser():void{ var user:Object = {}; user.userName = userName.text; user.pwd = pwd.text; var json:String = JSON.encode(user); userRO.addUser(json); } /** *用户列表 */ public function addUserResult(event:ResultEvent):void{ dg2.dataProvider = new ArrayCollection(JSON.decode(event.result.toString()) as Array); } java端 /** * 添加用户 */ public String addUser(String json){ JSONObject data = JSONObject.fromObject(json); User user = (User)JSONObject.toBean(data, User.class); //System.out.println(data.get("userName")); //System.out.println(data.get("pwd")); List<User> userList = new ArrayList<User>(); user.setId(10); userList.add(user); return JSONArray.fromObject(userList).toString(); }
|
|