我模仿 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; } } }
翻了一下之前的问题。。发现是没有定义 set 和 get。
真是神奇。。