###Json、Json字符串、Json数组、Java对象、List的互相转换
####1.登录操作
【前端 (form表单->Json->Json字符串)】–>后端
前端–>【后端(Json字符串->Java对象)】
(1)前端 (form表单->Json->Json字符串)
前端通过ajax向后端接口POST一个Json字符串,首先将from表单里的数据获取到封装成Json:
var loginname=document.getElementById("loginname");
var loginpassword=document.getElementById("loginpassword");
//封装json
var jsonreq={
loginname:loginname.value,
password:loginpassword.value
};
然后将Json转换成Json字符串并发送:
var jsondate = JSON.stringify(jsonreq);
...
xmlHttp.send(jsondate);
(2)后端 (Json字符串->Java对象)
前端向后端POST数据时是传的Json字符串,当后台接收到这个字符串时,需要转换成Java对象进行操作。接收:
@RequestMapping(value = "/login")
@ResponseBody
public String login(@RequestBody String reqjson) {}
转换:
//json字符串转json
User user = ResultContent.jsonstring2obj(reqjson);
//json字符串转User对象
public static User jsonstring2obj(String jsonrs){
JSONObject jsonObject=JSONObject.fromObject(jsonrs);
User user=(User)JSONObject.toBean(jsonObject, User.class);
return user;
}
####2.查询所有活动操作
【后端(List<>->Json数组->Josn字符串)】–>前端
后端–>【前端 (Json字符串->Json数组)】
(1)后端(List<>->Json数组->Josn字符串)
后端如何将从数据库里查询出来的List<>转换成Json字符串:
List<Activi> list = activiService.selectallactivi();
return ResultContent.ResultList2JsonString(list);
开始转换:
//List<Object>转Json字符串
public static String ResultList2JsonString(List lists){
JSONArray listArray= JSONArray.fromObject(lists);
return listArray.toString();
}
(2)前端(Json字符串->Json数组)
前端去GET多条数据时,后端把所有的数据转换成Json字符串,前端需要把后端返回的Json字符串转换为Json数组:
var result = xmlHttp.responseText; //响应成功s
//JSON字符串----》JSON数组
activiorderjsonlist = eval(result);
然后就可以对这个Json数组进行相应的操作:
for(var i=0;i<activiorderjsonlist.length;i++) {
if(activiorderjsonlist[i].orderplace==place){
var html = "";
if (activiorderjsonlist[i].approvetype == 1) {
approvetype = "审批通过";
} else if (activiorderjsonlist[i].approvetype == 2) {
approvetype = "审批不通过";
} else {
approvetype = "等待审批";
}
}}}
####3.后端返回请求控制
【后端(java对象、普通数据->Json->Josn字符串)】–>前端
后端–>【前端 (Json字符串->Json对象)】
(1)后端(普通数据->Json->Josn字符串)
后端 创建Json对象进行put、对象->Json->Json字符串的操作:
//结果控制
public static String result2jsonstring(String rs,String errormsg,Object object){
JSONObject json=null;
if(object!=null){//返回有实体类时
//对象转Json
json = JSONObject.fromObject(object);
json.put("REQUESTRS",rs);
if(errormsg!=null){
json.put("ERRORMSG",errormsg);
}
}else {//返回值不包含实体类时
Map map=new HashMap();
map.put("REQUESTRS",rs);
if(errormsg!=null){
map.put("ERRORMSG",errormsg);
}
json = JSONObject.fromObject(map);
}
//Josn转Json字符串
return json.toString();
}
(2)前端 (Json字符串->Json对象)
后端返回结果时,将数据封装成Json装换成Json字符串返回前端,前端接收到之后需要转换成Json对象:
var result=xmlHttp.responseText;//响应成功
//JSON字符串---》JSON对象
var jsonresult=JSON.parse(result);
之后就可以对这个Json对象进项操作:
if("SUCCESS" == jsonresult.REQUESTRS){
alert("欢迎您!"+jsonresult.username);
//跳转到相应的界面
if(2==jsonresult.usertype){//大活管理员
window.open("adminis.html","_blank");
}else {
window.location.href="allactivi.html";
}
}else {
alert("登录失败!");
}