删除POJO的toString()中的某些JSONObject键

问题描述 投票:1回答:1

我在删除JPA POJO的toString()中的一些JSONObject键时遇到问题。我只是不想在将它们保留在POJO中的同时显示在toString()中,以便我可以使用它们。我可以设法在“父”实体中删除它们,但无法在子实体中删除它们。以下是我在父实体中的toString()实现。

@Entity
public class MyPoJo () {
// all fields

// getters and setters

@Override
public String toString() {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        JSONObject modifiedJSON = new JSONObject(gson.toJson(this));
        modifiedJSON.remove("batchId");
        return modifiedJSON.toString();
     }
}

我试图在所有子实体中做同样的事情。当我调用toString()时,batchId仅在父实体中消失了。它们仍然存在于儿童中。如何删除子实体中的某些键?谢谢。

java json jpa tostring
1个回答
0
投票

您可以使用Jackson来实现此目的,方法是将要忽略的字段标记为@JsonIgnore

@Entity
public class MyPoJo () {
// all fields
@JsonIgnore
private String batchId;

// getters and setters

@Override
public String toString() {
        // Exception handling code not added
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(this);
     }
}

您可以将ObjectMapper mapper = new ObjectMapper();和期望处理代码进一步移到一个单独的类,以避免为每个toString()调用创建新的ObjectMapper对象。

© www.soinside.com 2019 - 2024. All rights reserved.