问题
使用注解开发时,@ResponseBody不生效:即使用@ResponseBody注解后,并不返回JSON数据
原因
可能有:
- 所返回的对象并没有被序列化,而这一步不可或缺
解决
序列化的方式:
- Java原生:给返回的类实现
Serializable接口。只需加上implements Serializable即可。
public class RestResponse implements Serializable {
//....
}
- Hessian序列化:请自行查阅资料。
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import com.caucho.hessian.io.HessianInput;
import com.caucho.hessian.io.HessianOutput;
public class Hessian {
public static void main(String[] args) throws IOException {
RestResponse resp = new RestResponse(); //无需implements Serializable
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//Hessian的序列化输出
HessianOutput hessianOutput = new HessianOutput(outputStream);
hessianOutput.writeObject(resp);
byte[] outputStreamData = outputStream.toByteArray();
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStreamData);
//Hessian的反序列化输入
HessianInput hessianInput = new HessianInput(inputStream);
RestResponse resp2 = (RestResponse)hessianInput.readObject();
}
}
- JSON序列化:如Fastjson、Jackjson等。请自行查阅资料。
- 其他:略。
本文探讨了在使用@ResponseBody注解开发时遇到的问题,重点介绍了如何通过Java原生、Hessian及JSON序列化解决返回对象未被正确序列化的问题,适合前端与后端开发者参考。
7433

被折叠的 条评论
为什么被折叠?



