【问题标题】:Micronaut JSON serialization - use getters instead of fieldsMicronaut JSON 序列化 - 使用 getter 而不是字段
【发布时间】:2020-11-27 17:01:59
【问题描述】:

在使用 Spring MVC 时,默认情况下,每当您的 @RestControllers 返回一个对象时,它都会根据其 getter 而不是其字段序列化为 JSON。

有什么方法可以让 Micronaut 也像这样运行吗?示例:

public class User {

  private String email;
  private String password;

  public String getEmail() {
    return email;
  }

}

@Controller
public class UserController {

  public User getUser() {
    ...
  }

}

所以这应该返回:

{
  "email": "email@addres.com"
}

而不是这个:

{
  "email": "email@addres.com",
  "password": "pass"
}

我知道 Jackson 的注释,但是,我只是想了解是否可以将 Micronaut 配置为像这样。

谢谢。

【问题讨论】:

  • micronaut 是否使用反射? How Does it Work
  • 感谢分享。我认为这与问题无关,因为这解释了 Bean 定义不依赖于反射。不过,我清楚地以错误的方式提出了我的问题:实际上,我想要实现的是将杰克逊配置为使用吸气剂而不是字段。我刚刚更新了问题。
  • 好的,但是您的示例会生成与您描述的完全相同的 json...您只会错过端点上的 @Get
  • 并非如此。在我给出的示例中,密码也在被序列化。
  • 真的吗?没有吸气剂,它不应该......如果我尝试它不会。

标签: java jackson micronaut


【解决方案1】:

它应该按预期工作,它不应该显示密码。如果没有没有 getter(密码),则不会显示任何字段。

从一个没有任何功能的项目开始:micronaut launch

然后

import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.runtime.Micronaut;

public class Application {

    public static void main(String[] args) {
        Micronaut.run(Application.class, args);
    }
}

class User {
    String email;
    String password;

    public User(String email,String password) {
        this.email = email;
        this.password = password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEmail() {
        return email;
    }
}

@Controller
class UserController {

    @Get
    public User getUser() {
        return new User("email@micronaut.io","secret");
    }

}

http://localhost:8080 结果:

{
"email": "email@address.com"
}

【讨论】:

  • 好吧,也不确定发生了什么。我刚刚使用启动重新生成了项目,现在它按预期工作。感谢您的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
相关资源
最近更新 更多