java - 将对象转换为 JSON 错误时:com.fasterxml.jackson.databind.exc.MismatchedInputException
问题描述
我正在List<Object>
尝试JSON
使用ObjectMapper
. 我试过如下但我得到了例外,即
com.fasterxml.jackson.databind.exc.MismatchedInputException:
public List<ClientRT> callSP() throws IOException {
List<Object> crt=crtRepo.roomtype(60);
ObjectMapper mapper = new ObjectMapper();
String json=mapper.writeValueAsString(crt);
//ClientRT obj=mapper.readValue(json,ClientRT.class);
List<ClientRT> obj=mapper.readValue(json,mapper.getTypeFactory()
.constructCollectionLikeType(List.class,ClientRT.class));
return obj;
}
ClientRT 类
public class ClientRT {
public Integer res_nclient_room_type_id;
public String res_sclient_rt_desc;
public String res_sclient_rt_name;
public String res_sclient_rt_code;
//getter setter
public ClientRT() {
super();
}
@Override
public String toString() {
return "ClientRT [res_nclient_room_type_id=" + res_nclient_room_type_id + ", res_sclient_rt_desc="
+ res_sclient_rt_desc + ", res_sclient_rt_name=" + res_sclient_rt_name + ", res_sclient_rt_code="
+ res_sclient_rt_code + "]";
}
}
期望 JSON 中的结果
[
{ "res_nclient_room_type_id":1 ,
"res_sclient_rt_desc": "FACILITIES - AVAILABLE ROOM",
"res_sclient_rt_name":"FACILITIES - AVAILABLE ROOM" ,
"res_sclient_rt_code":"050"
},
]
例外
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.spacestudy.model.ClientRT` out of START_ARRAY token
at [Source: (String)"[[1,"TEMPORARILY NOT ASSIGNED","TEMPORARILY NOT ASSIGNED","000"],[2,"FACILITIES - AVAILABLE ROOM","FACILITIES - AVAILABLE ROOM","050"],[3,"FACILITIES - UNDEFINED PURPOSE","FACILITIES - UNDEFINED PURPOSE","060"],[4,"FACILITIES - UNFINISHED AREA","FACILITIES - UNFINISHED AREA","070"],[5,"CLASSROOM/LECTURE HALL","CLASSROOM/LECTURE HALL","110"],[6,"CLASSROOM SERVICE","CLASSROOM SERVICE","115"],[7,"CLASSROOM STORAGE","CLASSROOM STORAGE","116"],[8,"CLASSROOM KITCHEN","CLASSROOM KITCHEN","119"],[9,"CLA"[truncated 8500 chars]; line: 1, column: 2] (through reference chain: java.util.ArrayList[0])
谁能告诉我如何解决这个异常?
解决方案
正如上面 amicoderozer 所提到的,您需要ClientRT
从 json 而不是从类中删除类字段的数据类型。
推荐阅读
- html - 如何为多个元素使用 circleType
- r - 如果 R 中存在链接,则插入 Youtube 链接
- javascript - 当服务器大多处于超时状态时,他们是否有任何方式来获取/更新网站的特定 div 内容?
- algorithm - 自动完成算法的新特性
- opengl - OpenGL没有将最近的片段绘制到相机
- bash - 如果条件不起作用将项目与 bash 中的 __ 进行比较
- kubernetes - 在 Kubernetes 上部署 GlusterFS DaemonSet
- tensorflow - TensorFlow 使用哪种排序算法?
- c - 将 uint8_t[4] 转换为 unsigned long
- java - 接受 int 输入并解析成 char