Java 无法使JsonIdentityInfo正常工作
我有两个物体之间的关系。我有一个springcli与使用Jackson的restfulweb服务通信。我正在使用@JsonIdentityInfo注释,但它无法在这两个类之间创建关系。此外,我正在使用WebClient 第一个对象包含以下代码:Java 无法使JsonIdentityInfo正常工作,java,spring,spring-boot,jackson,Java,Spring,Spring Boot,Jackson,我有两个物体之间的关系。我有一个springcli与使用Jackson的restfulweb服务通信。我正在使用@JsonIdentityInfo注释,但它无法在这两个类之间创建关系。此外,我正在使用WebClient 第一个对象包含以下代码: import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @JsonSerialize(as=
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@JsonSerialize(as= FuncUnit.class)
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "fu_id", scope=FuncUnit.class)
@Setter @Getter
public class FuncUnit {
@JsonProperty(value = "description")
private String description;
@Id @JsonProperty(value = "fu_id", required = true)
private Long fu_id;
// standard constructors
public FuncUnit (long fuId)
{
fu_id = fuId;
}
public FuncUnit() {}
}
第二个目标是:
@JsonSerialize(as=Engine.class)
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope = Engine.class)
@Setter @Getter
public class Engine {
@JsonProperty(value = "id", required = true)
private Long id;
@JsonProperty(value = "func_unit")
private FuncUnit func_unit;
public Engine() {}
}
现在,我收到的json如下所示:
[
{
"id": 111,
"functional_unit": {
"description": "",
"fu_id": 11,
},
},
{
"id": 112,
"functional_unit": 11,
}
]
我写的webClient代码如下。(我也尝试过不使用交换策略,结果也一样):
ExchangeStategies ExchangeStategies=ExchangeStategies.builder()
.编解码器(配置器->
configurer.defaultCodecs().jackson2JsonDecoder(新的jackson2JsonDecoder(新的ObjectMapper(),MediaType.APPLICATION_JSON)))
.build();
字符串url=cliUtils.getBaseUrl();
WebClient WebClient=WebClient.builder().exchangeStrategies(exchangeStrategies.build();
UriComponentsBuilder=UriComponentsBuilder.newInstance().fromHttpUrl(url);
List units=webClient.get()
.uri(builder.build().toUri())
.header(HttpHeaders.CONTENT\u TYPE、MediaType.APPLICATION\u JSON\u值)
.retrieve()
.车身流量(发动机等级)
.LIST()
.block();
调用webClient代码时,我没有收到任何错误,但只有一个引擎有一个FuncUnit。
另一个引擎包含一个null作为单位
ExchangeStrategies exchangeStrategies = ExchangeStrategies.builder()
.codecs(configurer ->
configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(new ObjectMapper(), MediaType.APPLICATION_JSON)))
.build();
String url = cliUtils.getBaseUrl();
WebClient webClient = WebClient.builder().exchangeStrategies(exchangeStrategies).build();
UriComponentsBuilder builder = UriComponentsBuilder.newInstance().fromHttpUrl(url);
List<Engine> units = webClient.get()
.uri(builder.build().toUri())
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.retrieve()
.bodyToFlux(Engine.class)
.collectList()
.block();