将此关键字与ObjectMapper一起使用

发布于 2025-02-03 05:07:02 字数 1111 浏览 3 评论 0原文

我已经在POJO中实现了一种方法,我想用它将该对象转换为JSON字符串。

public class Plan implements Stringer {

  private long id;
  private String planId;
  private String planName;



 @Override
  public String getAsString() {
    try {
      return EntityMapper.getInstance().writeValueAsString(this);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
} 

我的EntityMapper是:

@Data
public class EntityMapper {

  private static ObjectMapper mapper;

  private EntityMapper() {
  }

  public static ObjectMapper getInstance() {
    if (mapper == null) {
      mapper = new ObjectMapper();
    }
    return mapper;
  }
}

当我称此为plan.getAsstring()时,我会得到stackoverflowerror 但是,如果我将其更改

  public String getAsString(Object obj) {
    try {
      return EntityMapper.getInstance().writeValueAsString(obj);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
    return null;
  }

plan.getAsstring(plan),则可以使用它。 有人可以帮助我理解为什么会发生这种情况吗? 我正在使用Java 11和最新版本的ObjectMapper

I have implemented a method in a POJO which I want to use to convert that object into a Json string.

public class Plan implements Stringer {

  private long id;
  private String planId;
  private String planName;



 @Override
  public String getAsString() {
    try {
      return EntityMapper.getInstance().writeValueAsString(this);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
} 

My EntityMapper is:

@Data
public class EntityMapper {

  private static ObjectMapper mapper;

  private EntityMapper() {
  }

  public static ObjectMapper getInstance() {
    if (mapper == null) {
      mapper = new ObjectMapper();
    }
    return mapper;
  }
}

When I call this like plan.getAsString() I get a StackOverflowError
However, if I change this to

  public String getAsString(Object obj) {
    try {
      return EntityMapper.getInstance().writeValueAsString(obj);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
    return null;
  }

and call it like plan.getAsString(plan) it works.
Can someone help me understand why this is happening?
I am using Java 11 and the latest version of the ObjectMapper

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文