gpt4 book ai didi

java - 当 json 属性名称根据请求发生变化时,使用restTemplate getForObject

转载 作者:行者123 更新时间:2023-12-02 00:36:05 24 4
gpt4 key购买 nike

我想使用restTemplate.getForObject方法,并且当所有请求的响应JSON键都相同时,我已经让它工作了。然后我使用了 @JsonProperty 注释,一切正常。

但现在我有一个响应,它始终具有相同的结构,但 JSON 键的名称之一会根据我正在执行的请求而更改。

示例

response 1:

{
"entities": {
"ID_1": { ... }
}
}

response 2:

{
"entities": {
"ID_2": { ... }
}
}

由于 ID_1 和 ID_2 的名称不同,我认为无法使用 @JsonProperty 注释。

所以我的问题是我是否需要更改我正在使用的方法或者如何创建映射到请求的 DataClass。我知道我可以手动将 JSON 响应映射到对象,但这感觉没有必要,不是吗?

DataClass 结果 = restTemplate.getForObject(url, DataClass.class);

最佳答案

您可以使用 JsonAnySetter JsonAnyGetter 进行映射,在以下示例中,additionalProperties 收集所有“非映射”属性:

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Example {

@JsonProperty("foo")
private String foo;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();


@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

关于java - 当 json 属性名称根据请求发生变化时,使用restTemplate getForObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com