分享

flex与java间用json传输数据

 hehffyy 2011-01-11
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();
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约