为什么当rest api调用枚举时,枚举不总是工作的



我有一个使用枚举的dto(让我们称之为比较(:

public enum Comparison {
comparisonA, comparisonB, comparisonC, comparisonD
}

public class ComparisonDto {
public Comparison operator;
public Integer value;
// with getter and setter
}

当用我的计算机编译时,它工作得很好,但其他开发人员有一个问题:使用的Comparison值不再被识别。调用路径时,json的形式如下:

{
"value" : 10,
"operator" : "comparisonA"
}

这种情况下最常见的错误是"无法识别的数据类型"。例如,api的形式如下:

@Path("/path-to-call")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public interface ApiRs {
@POST
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
ResponseStatus create(ComparisonDto comparisonDto);
}

未使用弹簧。

看起来您有一个简单的Typo,它会把一切都搞砸。我认为不正确的不是比较字段,而是值字段。

如果发送的json真的是:

{
"values" : 10,
"operator" : "comparisonA"
}

那么它应该是

{
"value" : 10,
"operator" : "comparisonA"
}

从"值"中删除多余的s,希望数据类型能够被识别,一切都会恢复正常。

最新更新