Java 在Spring boot中使用整型键和字符串值反序列化JSON
我必须反序列化并序列化一个简单的JSON,该JSON在Spring引导中使用外文库具有整数键和字符串值。我知道,如果密钥是字符串,那么在Spring boot中,这是非常直接的,具有自动序列化和反序列化功能。我的JSON看起来像:Java 在Spring boot中使用整型键和字符串值反序列化JSON,java,spring-boot,fasterxml,Java,Spring Boot,Fasterxml,我必须反序列化并序列化一个简单的JSON,该JSON在Spring引导中使用外文库具有整数键和字符串值。我知道,如果密钥是字符串,那么在Spring boot中,这是非常直接的,具有自动序列化和反序列化功能。我的JSON看起来像: "avatar": { "48x48": "https://wfrjira.int.abc.com/secure/useravatar?ownerId=person&avatarId=1
"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和setter类的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.httpMessageEndableException:json解析错误:无法反序列化[Lcom.XXXXXX.JiraResourceData;
启动外对象令牌;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化[Lcom.XXXXXX.JiraResourceData;启动外对象令牌的实例,位于[Source:(PushbackInputStream);行:1,列:1]
feign.codec.DecodeException:为类型[class[Lcom.XXXXXX.JiraResourceData;]和内容类型[application/json;charset=UTF-8]提取响应时出错;嵌套异常为org.springframework.http.converter.httpMessageEndableException:json解析错误:无法反序列化[Lcom.XXXXXX.JiraResourceData;
超出起始\u对象标记;嵌套异常为com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列化[Lcom.XXXXXX.JiraResourceData;
超出起始\u对象标记的实例
在[源:(PushbackInputStream);行:1,列:1]
我知道我需要在Avatar类中声明与JSON键名称匹配的变量,但字符串不能以数字开头声明。在Spring boot中是否有其他方法解决此问题?请提供帮助。首先,您最后的
JSON
行有一个逗号。请删除该逗号。此外JSON
应嵌入另一组括号中
另外,使用@JsonRootName(“avatar”)
注释您的类,因为您的类是大写的,而您的JSON
是小写的
此外,您可能希望将字段重命名为
JSON
中的字段名,或者使用@JsonProperty(“我的JSON名”)
对这些字段进行注释。首先,您的最后一行JSON
有一个逗号。请删除该逗号。此外,JSON
应该嵌入另一组括号中
另外,使用@JsonRootName(“avatar”)
注释您的类,因为您的类是大写的,而您的JSON
是小写的
此外,您可能希望将字段重命名为
JSON
中的字段名,或者使用@JsonProperty(“我的JSON名”)对这些字段进行注释
您可以编写自己的反序列化程序。您可以编写自己的反序列化程序。逗号是一个输入错误,我更正了它。实际上,我从一个较大的JSON中提取了JSON,其中其他元素是普通的字符串键和字符串值对。重命名这些字符串字段的问题是,字符串字段不能以NUB开头呃。好吧,通常将JSON转换为DTO,我个人使用IntelliJ中的插件复制JSON,它会为我生成DTO。我建议你也这样做,因为这是一项繁琐的任务。逗号是一个拼写错误,我更正了它。实际上,我从一个较大的JSON中提取JSON,其中其他元素是普通的字符串键和字符串值e对。重命名这些字符串字段的问题是字符串字段不能以数字开头。好吧,通常将JSON转换为DTO我个人使用IntelliJ中的插件复制JSON,它会为我生成DTO。我建议你也这样做,因为否则这是一项繁琐的任务。