我模仿 JSONResult 自己写了一个类,但是访问的时候报错:No converter found for return value of type: class com.example.pojo.ResultOutput
是什么原因?看了半天代码,看起来好像只有 formatToPojo 这个方法有点像格式化的逻辑,但是又找不到在哪里调用了这个方法。
该如何解决?
package com.example.pojo;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class ResultOutput {
// 定义jackson 对象
private static final ObjectMapper MAPPER = new ObjectMapper();
private Integer status;
private String msg;
private Object result;
public ResultOutput() {}
// 默认的构造函数,传三个参数
public ResultOutput(Integer status, String msg, Object result)
{
this.status = status;
this.msg = msg;
this.result = result;
}
// 默认成功的构造函数
public ResultOutput(Object result)
{
this.status = 200;
this.msg = "success";
this.result = result;
}
public static ResultOutput build(Integer status, String msg, Object result)
{
return new ResultOutput(status, msg, result);
}
public static ResultOutput success(Object result)
{
return new ResultOutput(result);
}
public static ResultOutput formatToPojo(String jsonData, Class<?> clazz)
{
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, ResultOutput.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("result");
Object obj = null;
if (clazz != null) {
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
return null;
}
}
public static ResultOutput format(String json)
{
try {
return MAPPER.readValue(json, ResultOutput.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static ResultOutput formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("result");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
return null;
}
}
}