Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring boot中使用整型键和字符串值反序列化JSON_Java_Spring Boot_Fasterxml - Fatal编程技术网

Java 在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

我必须反序列化并序列化一个简单的JSON,该JSON在Spring引导中使用外文库具有整数键和字符串值。我知道,如果密钥是字符串,那么在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和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。我建议你也这样做,因为否则这是一项繁琐的任务。