后端使用json格式将数据返回给前端的三种方式的实现

healthy 365 app admin 2025-09-29 05:57:13

文章目录

使用jackson类库使用springmvc的@RestController注解使用fastjson实现

使用jackson类库

1.引jar包

com.fasterxml.jackson.core

jackson-annotations

${jackson.version}

com.fasterxml.jackson.core

jackson-core

${jackson.version}

com.fasterxml.jackson.core

jackson-databind

${jackson.version}

2.写一个将object转json,并通过response对象将json格式的数据返回给前端的方法

public class BaseController{

protected static JsonFactory factory = mapper.getJsonFactory();

/**将对象转成json输出**/

protected void writeJSON(Object obj) throws IOException {

response.setContentType("text/html;charset=utf-8");

JsonGenerator responseJsonGenerator = factory.createJsonGenerator(response.getOutputStream(), JsonEncoding.UTF8);

responseJsonGenerator.writeObject(obj);

}

3.后端调用与前端的接收

public class Result implements Serializable{

private static final long serialVersionUID = 2267751680865696851L;

/**是否成功**/

private Boolean success = false ;

/**返回消息**/

private String message;

/**返回数据**/

private Object data;

//省略getter和setter方法

}

@Controller

@RequestMapping("/sysuser")

public class SysUserController extends BaseController{

@RequestMapping(value = "/login", method = { RequestMethod.POST, RequestMethod.GET })

public void login() throws IOException{

Result result=new Result();

result.setMessage("登录成功");

result.setSuccess(true);

super.writeJSON(result);

}

}

submitHandler:function(form){

$.ajax({

dataType : "json",

url : "sysuser/login.action",

type : "post",

data : $("#login_form").serialize(),

success : function(data) {

$.alert(data.message);

if(data.success){

//--------------------------------------------data.success

window.location.href = 'page/main.action';

}

},

error : function (e){

var d = e.responseJSON;

if(d){

$.alert(d.message);

}

}

});

return false; //阻止form提交

}

使用springmvc的@RestController注解

public class Result {

private static final int SUCCESS = 200;

private static final int FAILED = 500;

private int code;

private String message;

private Object data;

public Result(int code, String message, Object data) {

this.code = code;

this.message = message;

this.data = data;

}

public static Result ok(Object data) {

return new Result(SUCCESS, "success", data);

}

@RestController

@RequestMapping("/order")

public class SysOrderController {

@RequestMapping("/login")

public Result login() {

Result result=new Result();

result.setMessage("登录成功");

result.setSuccess(true);

Mapmap=new hashMap<>();

map.put("content","i am content")

return Result.ok(map);

}

}

/**

*@RestController是@ResponseBody和@Controller的组合注解

@Controller是用来响应页面的,如果是string类型的方法,则springmvc会跳转到相应的页面(视图)

@ResponseBody是用来响应数据的,如果是对象类型的方法,则springmvc会将结果对象转成json格式输出给前端

本例中我使用的是@RestController注解,所以springmvc会将返回的对象Result自动转json返回给前端(底层默认是使用jsckson来实现数据格式转换的)

*/

/**

*public Result add(@RequestBody WegoUser user){} @@RequestBody是将前端传来的json数据转对象。默认不用加(springmvc会自动完成数据的封装)

*/

使用fastjson实现

添加依赖:

com.alibaba

fastjson

1.2.58

@Controller

@RequestMapping("/login")

public class TestController {

@RequestMapping("/test")

public void test(HttpServletResponse response) throws IOException {

SysUser sysUser=new SysUser();

sysUser.setLoginPass("123456");

sysUser.setLoginAccount("小明");

System.out.println("dskfjdsfssdfdsfklkdfdsf");

JSONObject jsonObject= (JSONObject) JSONObject.toJSON(sysUser);

Mapmap=new HashMap<>();

map.put("phone","1223456");

map.put("status","ok");

jsonObject.put("info",map);

response.setContentType("text/html;charset=utf-8");

response.getWriter().write(jsonObject.toJSONString());

}

}

//结果如下:

//{"loginAccount":"小明","roles":[],"loginPass":"123456","info":{"phone":"1223456","status":"ok"}}

相关文章

手机支付app排行榜TOP10推荐

更多2月8日的星座

明明玩了900小时 为啥《辐射76》要封我的号?

渔人乐园网

13 款提供 AAA 级体验的 AA 游戏

第一次破处后,休养几天才能恢复?医生告诉你

蛤蟆油每次吃多少

3天卖货10万,95后苹果店导购如何玩转私域流量?

单反一镜走天下 佳能80D搭配18-200mm镜头