我将一个对象映射到 JSON 并且有一个名为Parameters
type 的变量的问题List <SimilarityParameter>
。
SimilarityParameter
看起来像这样:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SimilarityParameter {
private String name;
private String type;
public SimilarityParameter() {
}
public SimilarityParameter(String name, String type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
当这个列表很大时,一切都很好。JSON看起来像这样
{
"parameters":[
{
"name":"threshold",
"type":"Double"
},
{
"name":"numberOfResults",
"type":"Integer"
}
]
}
这没关系,因为在客户端进行 JSON 编码后,我有一个参数数组。
问题是当 List 的大小为 1 时。Mapper 将其逻辑传输到:
{
"parameters":{
"name":"numberOfResults",
"type":"Integer"
}
}
当客户端解码此 JSON 时,会得到一个包含name
和的数组type
。它会导致客户端的不一致。
我想将大小为 1 的列表映射到此:
{
"parameters":[
{
"name":"threshold",
"type":"Double"
}
]
}
所以在编码包含一个参数的数组之后。
这是响应的样子:
@XmlRootElement(name = "availableSimilarities")
@XmlAccessorType(XmlAccessType.FIELD)
public class SimilarityInfoResult {
private String similarityName;
private List <SimilarityParameter> parameters;
public SimilarityInfoResult() {
}
public SimilarityInfoResult(String similarityName, List<SimilarityParameter> parameters) {
this.similarityName = similarityName;
this.parameters = parameters;
}
public String getName() {
return similarityName;
}
public void setName(String similarityName) {
this.similarityName = similarityName;
}
public List<SimilarityParameter> getParameters() {
return parameters;
}
public void setParameters(List<SimilarityParameter> parameters) {
this.parameters = parameters;
}
}
有可能实现这一目标吗?