如果我得到了不确定的行 JSON 数据。我应该如何设置我的班级?这是我现在的班级public class ChatMessage {private Map<String, String> message = new HashMap<>();@JsonAnyGetterpublic Map<String, String> any(){ return this.message;}public Map<String, String> getMessage() { return this.message;}@JsonAnySetterpublic void setMessage(String key, String value) { message.put(key, value);}@Overridepublic String toString() { return "Message [message=" + message + "]";}}这是我从 js 发送的 json{"type":"message","user":"james","to":"","message":"Hi every"}我现在有错误org.springframework.messaging.converter.MessageConversionException: Could not read JSON: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('Welcome james join the room')at [Source: (byte[])" . {"type":"message","user":"james","to":"","message":"Welcome james join the room"}"; line: 1, column: 52] (through reference chain: chat.model.ChatMessage["message"]); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('Welcome james join the room')at [Source: (byte[])" . {"type":"message","user":"james","to":"","message":"Welcome james join the room"}"; line: 1, column: 52] (through reference chain: chat.model.ChatMessage["message"])因为我的 json 会像{"type":"message", "user":"james", "to":"", "message":"Welcome james join the room", "xxx":"xxxxxxxxxxxxx"}或者{"type":"message", "user":"james", "to":"", "message":"Welcome james join the room", "yyy":"xxxxxxxxxxxxx"}我应该如何设置我的班级?谢谢
1 回答
jeck猫
TA贡献1909条经验 获得超7个赞
重命名messagejson 中的字段或messagePOJO 中的字段。根据您的 POJO 结构,jackson 试图反序列化"message":"Hi every"到您的 POJO 中的消息字段,并且无法从中创建 Map(因为它只是一个字符串)。
您的代码将使用以下 json:
{"type":"message","user":"james","to":"","json-message":"Hi every"}
或者
以下POJO:
public class ChatMessage {
private Map<String, String> map = new HashMap<>();
@JsonAnyGetter
public Map<String, String> any(){
return this.map;
}
public Map<String, String> getMap() {
return this.map;
}
@JsonAnySetter
public void setMap(String key, String value) {
map.put(key, value);
}
@Override
public String toString() {
return "Map [map=" + map + "]";
}
}
添加回答
举报
0/150
提交
取消
