|
很多应用程序都设计客户端与服务器段的数据传输。现在比较流行的是以Json格式传输。但是JsonObject对象在本地处理比较麻烦,一个比较好的方法是与服务器进行数据交互时将自定义对象转化为JsonObject对象再进行传输。客户端接受到服务器的jsonObject 数据时将其解析为本地自定义对象再对其进行处理,这样也比较符合面向对象统一编程的思想。
/**
* 从将JSONObject数据转化为Message对象并返回
*
* @param jobj
* 待转换的JSONObject对象
* @return 转换后的Messageclass对象
*/
public static Message castJsonToMessage(JSONObject jobj) {
String typeString = "", sendTimeString = "";
int senderId = -1, receiverId= -1;
String messageString = "";
try {
senderId = jobj.getInt(Constants.SENDER);
receiverId = jobj.getInt(Constants.RECEIVER);
messageString = jobj.getString(Constants.MESSAGE_CONTENT);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ChatContentMessage chatContentMessage =new ChatContentMessage(typeString, senderId, receiverId,
messageString, sendTimeString);
return chatContentMessage;
}
/**
* 将Message类对象转化为JSONObject并以字符串形式返回便于SOCKET发送
*
* @param message
* 待转换的消息对象
* @return
* @throws JSONException
*/
public static String castMessageclassToJsonStr(Message message)
throws JSONException {
JSONObject jsonObject = new JSONObject();
String type=message.type;
if(type.equals(Constants.CHAT_MESSAGE))
{
ChatContentMessage chatContentMessage=(ChatContentMessage)message;
jsonObject.put(Constants.TYPE, chatContentMessage.type);
jsonObject.put(Constants.SENDER, chatContentMessage.senderId);
jsonObject.put(Constants.RECEIVER,chatContentMessage.receiverId);
jsonObject.put(Constants.MESSAGE_CONTENT, chatContentMessage.msg);
jsonObject.put(Constants.SEND_TIME, chatContentMessage.time);
}
return jsonObject.toString();
}
|