JSON分析错误:使用spring RestTemplate.exAnge时无法反序列化
我不熟悉JSON和spring。能够编写使用REST Web服务的简单示例。但当我应用于实时场景时,JSON是嵌套的,我无法控制更改结构 下面的代码给了我JSON分析错误:使用spring RestTemplate.exAnge时无法反序列化,json,spring,parsing,resttemplate,Json,Spring,Parsing,Resttemplate,我不熟悉JSON和spring。能够编写使用REST Web服务的简单示例。但当我应用于实时场景时,JSON是嵌套的,我无法控制更改结构 下面的代码给了我解析错误。无法反序列化pg.domain.LookupDo[]的实例,该实例超出了起始\u对象标记 LookupDo[] lookupDos = template.exchange(url, HttpMethod.GET, request, LookupDo[].class).getBody(); 如何构造域对象 @JsonIgnorePr
解析错误。无法反序列化pg.domain.LookupDo[]的实例,该实例超出了起始\u对象标记
LookupDo[] lookupDos = template.exchange(url, HttpMethod.GET, request, LookupDo[].class).getBody();
如何构造域对象
@JsonIgnoreProperties
public class LookupDo {
private String companyCode;
private String plant;
private String category;
private String value;
private String descr;
您需要将类与JSON结构相匹配
Response res = template.exchange(url, HttpMethod.GET, request, Response.class).getBody();
LookupDo[] lookupDos = res.getD().getResults();
public class Response{
private Data d;
...
}
public class Data{
private LookupDo[] results;
...
}
谢谢你的回复。但不知何故,数据没有加载,虽然没有解析异常,但CompanyCode、Plant等总是为空。为了检查是否添加了元数据(请参见上面我的json对象),尽管它不是必需的,但我添加了一个类“metadata”,并加载了该部分。但不是CompanyCode和Plant等。我已经花了足够的时间,确保嵌套对象与Json对齐。唯一值得怀疑的是变量情况。Json在CompanyCode中使用大写C。在java中,我得到了公司代码。不确定这是否是个问题。我尝试了这两种情况,但都不起作用。请确保您对类和
companyCode
->companyCode
capital使用getter setter和构造函数,第一个在jsonSorry中仍然不起作用。通过调试窗口查看屏幕截图问题是json中的大写camelcase,我认为,您可以使用json中的小写camelcase作为您的类进行测试。谢谢。终于奏效了。谢谢。对你是对的。最后,我与服务提供商(准备json)进行了交谈,要求他将第一个字符作为小写字母,最后终于成功了。但不知何故,我不相信我们的做法。(1) 有这么多嵌套对象(2)强制使用json属性first char小写。必须有更好/更清洁的解决方案。不管怎么说,它成功了。谢谢你的时间,罗诺