问题
使用注解开发时,@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等。请自行查阅资料。
- 其他:略。