flex與java間用json傳輸數(shù)據(jù)
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{
//先轉換為數(shù)組
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();
}