只提供部分的js以及后台代码,我这边首先把值放到map当中,然后把map转为json字符串,通过websocket,发送数据到后台,浏览器默认会把字符串数据进行转义,这时候需要得到转义前的json字符串
就需要在后台进行转码,得到前台传过来的完整json字符串
String deurl= URLDecoder.decode(shiftMessage,"UTF-8");
前台js;
var message1 = '{\"message\":\"'
+ oStr
+ '\",\"chatId\":\"'
+chatId
+ '\",\"appId\":\"'
+appId
+ '\",\"nickName\":\"'
+nickName
+'\",\"msgType\":\"text\",\"chatCode\":\"'
+chatCode
+'\"}';var mapObj = new Map();
mapObj.set("chatId",chatId);
mapObj.set("appId",appId);
mapObj.set("nickName",nickName);
mapObj.set("chatCode",chatCode);
var shiftMessage= socket.mapToJson(mapObj);strMapToObj : function(strMap){
let obj= Object.create(null);
for (let[k,v] of strMap) {
obj[k] = v;
}
return obj;
},
/**
*map转换为json
*/
mapToJson: function(map) {
return JSON.stringify(this.strMapToObj(map));
},
后台取shiftMessage
//获取websocket返回参数
public SockerParameter getParameter(String shiftMessage) {
String deurl;
SockerParameter sp=null;
try {
sp=new SockerParameter();
deurl = URLDecoder.decode(shiftMessage,"UTF-8");
JSONObject jobj = JSON.parseObject(deurl);
String chatId = jobj.getString("chatId");
String appId = jobj.getString("appId");
String nickName= jobj.getString("nickName");
String chatCode= jobj.getString("chatCode");
String userId= jobj.getString("userId");
sp.setAppId(appId);
sp.setChatCode(chatCode);
sp.setChatId(chatId);
sp.setNickName(nickName);
sp.setUserId(userId);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return sp;
}