gpt4 book ai didi

java - jackson :需要另一种方法来成为二传手

转载 作者:行者123 更新时间:2023-12-01 11:11:18 26 4
gpt4 key购买 nike

public class UrlTemplate extends AbstractBeanDefinition implements Serializable {

private List<HeaderField> header = new ArrayList<>();

@Tag("header")
public List<HeaderField> getHeader() {
return this.header;
}

@Node("header/header-field")
public void setHeader(HeaderField headerField) {
this.header.add(headerField);
}

public void setHeader(List<HeaderField> header) {
this.header = header;
}
}

TagNode注释被其他库使用,我无法更改方法 setHeader(HeaderField headerField) .

我定义了一个有效的setter setHeader(List<HeaderField> header)用于序列化,但是当我尝试序列化 UrlTemplate 时到 String 并将 String 反序列化为 UrlTemplate ,抛出异常:

com.fasterxml.jackson.databind.JsonMappingException: 
Conflicting setter definitions for property "header":
com.enniu.crawler.encreeper.core.domain.config.search.UrlTemplate#setHeader(1 params) vs
com.enniu.crawler.encreeper.core.domain.config.search.UrlTemplate#setHeader(1 params)

我想我可以声明setHeader(List<HeaderField> header)成为 Jackson 用来反序列化的 setter,但我不知道如何用 Jackson 来实现。

谁能给我一些提示吗?

最佳答案

尝试使用 jackson 的 JsonProperty 注释

@JsonProperty("header")
private Object headerJson;

public Object getHeaderJson() {
return status;
}

public void setHeaderJson(Object headerJson) {
this.headerJson= headerJson;
}

headerJson 将映射到 json header,因此它应该可以解决冲突问题。

关于java - jackson :需要另一种方法来成为二传手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32333311/

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