问题描述
我必须使用Feign库在Spring-boot中反序列化并序列化一个简单的JSON,该整数具有整数键和字符串值。我知道,如果键在String中,这在带有自动序列化和反序列化的Spring-boot中非常简单。我的JSON看起来像:
"avatar": {
"48x48": "https://wfrjira.int.abc.com/secure/useravatar?ownerId=person&avatarId=1234","24x24": "https://wfrjira.int.abc.com/secure/useravatar?size=small&ownerId=person&avatarId=1234"
}
我的带有合适的getter和setters类的POJO bean是:
class Avatar {
private String _48x48;
private String _24x24;
public Avatar() {
}
public Avatar(String _48x48,String _24x24) {
this._48x48 = _48x48;
this._24x24 = _24x24;
} Getters and Setter ...
我遇到以下错误:
发生意外错误(类型=内部服务器错误,状态= 500)。 提取类型[class [Lcom.XXXXXX.JiraResourceData;]和内容类型[application / json; charset = UTF-8]的响应时出错;嵌套异常是org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法从START_OBJECT令牌中反序列化
[Lcom.XXXXXX.JiraResourceData;
实例;嵌套的异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从[来源:(pushbackinputstream)的START_OBJECT令牌中反序列化[Lcom.XXXXXX.JiraResourceData;
的实例。行:1,列:1] feign.codec.DecodeException:提取类型[class [Lcom.XXXXXX.JiraResourceData;]和内容类型[application / json; charset = UTF-8]的响应时出错;嵌套的异常是org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法从START_OBJECT令牌中反序列化[Lcom.XXXXXX.JiraResourceData;
的实例;嵌套异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从START_OBJECT令牌中反序列化[Lcom.XXXXXX.JiraResourceData;
实例 在[来源:(pushbackinputstream);行:1,列:1]
我知道我需要用与JSON键匹配的名称声明Avatar类中的变量,但不能以数字开头声明字符串。在Spring-boot中还有其他解决方法吗?任何帮助将不胜感激。
解决方法
首先,您最后的JSON
行带有逗号。删除它。此外,JSON
应该嵌入另一组括号中。
另外,由于您的班级是大写字母,而您的@JsonRootName("avatar")
是小写字母,因此请用JSON
注释您的班级。
此外,您可能想将字段重命名为JSON
中的字段名称,或使用@JsonProperty("my-json-name")
进行注释