【问题标题】:Swagger+Spring: is it possible to preserve the fields order in the payload?Swagger+Spring:是否可以保留有效负载中的字段顺序?
【发布时间】:2018-08-03 14:44:50
【问题描述】:

假设我的有效载荷类是:

public class Payload {
  private final long id;
  private final String aField;
}

springfox 将按字典顺序对有效负载字段进行排序,这将产生以下有效负载规范:

{
  "aField": "string",
  "id": 0
} 

是否有任何控制参数告诉springfox保留原始字段顺序?

【问题讨论】:

  • 你能解决这个问题吗?
  • 您好,您找到解决方案了吗(经过多年的更新?)

标签: java spring swagger springfox


【解决方案1】:

您可以使用@ApiModelProperty 并指定position

public class Payload {

  @ApiModelProperty(value = "The id", position = 1)
  private final long id;
  @ApiModelProperty(value = "The a field", position = 2)
  private final String aField;

}

【讨论】:

  • 谢谢,我知道这个选项。问题是关于仅通过一个设置在更高级别触发它(想象一个具有 10-20-30.. 字段的有效负载)。
  • 在这种情况下,它可能必须使用反射,并且从以下链接中,使用反射检索字段不尊重它们的出现顺序(groups.google.com/forum/#!topic/swagger-swaggersocket/…stackoverflow.com/questions/1097807/…)。
  • 好的,那么简短的回答似乎是“否”
  • 在全球范围内是否有任何解决方法?还是可以配置级别?
  • 这在 SpringFox v3.0.0 中对我不起作用
【解决方案2】:

看起来还没有好的通用解决方案。我建议在 github 上关注/upvote 这个问题:https://github.com/springfox/springfox/issues/3853

该项目维护得不好,最后一次提交是从 1 年前开始的。

【讨论】:

    【解决方案3】:

    您可以在类的顶部使用一次@JsonPropertyOrder,并且这些字段将按照它们在类中定义的顺序进行排序 https://www.logicbig.com/tutorials/misc/jackson/json-property-order-annotation.html

    【讨论】:

    • springfox 仍然按字典顺序生成字段
    • Jaison,你没有回答 OP。 Springfox 忽略 @JsonProprtyOrder 注释。
    猜你喜欢
    • 2012-06-22
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 2016-07-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多