如何重命名 JSON 页面属性而不必编写完整的自定义序列化程序?

索洛莱多

我有以下控制器从数据库中返回项目列表:

@GetMapping(value = "/", produces = MediaType.APPLICATION_JSON_VALUE)
public Page<Movies> getAll(Pageable pageable) {
    return this.service.getAll(pageable);
}

正如预期的那样,Spring Boot 正确地序列化了它:

{
    "content": [ ... ],
    "pageable": { ... },
    "last": false,
    "totalPages": 2,
    "totalElements": 35,
    "size": 20,
    "number": 0,
    "sort": {
        "sorted": false,
        "unsorted": true,
        "empty": true
    },
    "numberOfElements": 20,
    "first": true,
    "empty": false
}

但是,我想重命名这些属性之一。例如,我想使用items而不是content作为键名。

在这种情况下,由于Pageis from org.springframework.data.domain,我不能使用 Jackson 注释来重命名该属性。

我可以编写一个自定义序列化程序(类似这样),但我只想重命名该属性,所以我不想从头开始编写它。

处理这个问题的更好方法是什么?

弗兰哈维

您可以为此使用 Mix-ins。您需要一个接口或抽象类来将更改应用于不可修改的类:

interface MixIn<T> {
    @JsonProperty("items")
    List<T> getContent(); // rename property
}

然后注册 Mix-in:

mapper.addMixIn(Slice.class, MixIn.class);

Slicecontent属性所在的实际类它会产生类似的东西:

{
   "last":true,
   "totalElements":1,
   "totalPages":1,
   "size":0,
   "number":0,
   "numberOfElements":1,
   "first":true,
   "sort":null,
   "items":[
      "listItem"
   ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何编写自定义json序列化程序并将值序列化为数组

如何在子类上重命名JSON属性

如何为Jackson编写自定义JSON反序列化器?

如何使用Jackson重命名JSON序列化中的根密钥

如何使用自定义格式化程序进行JSON序列化

如何使用活动模型序列化程序自定义json-api序列化模型的ID?

如何实现将类型附加到属性名称的json的自定义序列化?

如何为父类和子类使用单独的自定义json序列化程序?

如何从两个序列化程序创建自定义输出 JSON

如何编写自定义序列化程序?

如何自定义JSON对象序列化?

如何在Jackson JSON(反序列化)中自定义序列化或转换具有自定义键类型的Map属性?

如何重命名JavaFX程序?

Poison.Encoder如何在渲染的JSON中重命名属性?

如何重命名某些JSON对象属性以在HTML表中显示它

如何重命名由 pyspark 生成的 JSON?

Laravel Eloquent序列化:如何重命名属性?

使用python重命名json键属性

如何使Json.NET序列化和反序列化还实现IDictionary <string,object>的自定义动态类型的声明属性?

重命名目标c中json序列化的属性

如何在Spring Boot应用程序中将参数传递给自定义JSON反序列化器

如何使用Json.Net使用自定义键对字典进行序列化/反序列化?

如何使用尊重自定义注释的Jackson来执行自定义JSON反序列化?

如何在杰克逊中编写自定义属性反序列化器

如何使用liquibase重命名序列?

如何在C#中反序列化自定义json

我如何json序列化自定义可迭代项?

如何在自定义getter中序列化JSON对象?

Jersey + Jackson JSON日期格式序列化-如何更改格式或使用自定义JacksonJsonProvider