オブジェクトをJSONにマッピングしていますがParameters
、型と呼ばれる1つの変数に問題があります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;
}
}
このリストが大きい場合、すべてがOKです。JSONは次のようになります
{
"parameters":[
{
"name":"threshold",
"type":"Double"
},
{
"name":"numberOfResults",
"type":"Integer"
}
]
}
クライアント側でJSONエンコードした後、パラメーターの配列があるため、これは問題ありません。
問題は、リストのサイズが1の場合です。マッパーはそれを論理的に次の宛先に転送します。
{
"parameters":{
"name":"numberOfResults",
"type":"Integer"
}
}
クライアントがデコードすると、このJSONはとを含む配列を取得しname
ますtype
。クライアント側で不整合が発生します。
サイズ1のリストをこれにマップしたいと思います:
{
"parameters":[
{
"name":"threshold",
"type":"Double"
}
]
}
したがって、1つのパラメータを含む配列をエンコードした後。
応答は次のようになります。
@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;
}
}
これを達成することは可能ですか?