【问题标题】:How to output an API having names different than variable names?如何输出名称与变量名称不同的 API?
【发布时间】:2021-11-08 12:58:38
【问题描述】:

我有一个像下面这样的实体

@Data
@NoArgsCounstructor
@AllArgsConstructor
public class Class {
@JsonProperty("Data")
List<ClassData> classData;
}

我想在输出中将其视为“数据”,但它却将“classData”作为字段。我尝试了一堆注释,但似乎没有任何效果。请告诉我如何获得这种输出。

输出

{
"classData":[]
}

需要的输出

{
"Data":[]
}

编辑:我得到了一个不同名称的字段,我需要为输出提供一些其他名称。例如,我将输入作为“ClassData”并将输出作为“Data”

【问题讨论】:

  • 再次检查您是否使用Jackson 进行序列化。

标签: java json spring-boot api backend


【解决方案1】:

假设您使用 Jackson 来序列化/反序列化您的资源,只需将 POJO 字段和 classData 重命名为 data,Jackson 将使用新字段名称来创建 JSON 输出。

【讨论】:

  • 它不应该已经用@JsonProperty工作了吗?
  • 应该考虑到 OP 正在使用 Jackson,并且后者已正确配置。但是,没有明确说明他们正确使用了 Jackson。
  • 那么你的回答有什么意义。您也可以复制粘贴 OP 代码。 假设您使用 Jackson 来序列化/反序列化,考虑到这个假设,它应该已经工作了。
  • 如上所述,没有明确的迹象表明他们正在使用 Jackson。最重要的是,没有代码示例来查看他们手头的内容。因此,在没有可用信息的情况下,解决问题的最简单方法就是重命名该字段。
【解决方案2】:

我有办法做到这一点!

而不是使用@JsonProperty 使用@JsonSetter 获取输入,然后使用@SerializedName 重命名输出数据

感谢大家的帮助

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 2021-06-07
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多