jsonObject对象与本地自定义对象相互转化

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:28   1802   0

很多应用程序都设计客户端与服务器段的数据传输。现在比较流行的是以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();
   }


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP