Json、Json字符串、Json数组、对象、List的互相转换

347 阅读2分钟

###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("登录失败!"); 
 }