删除 POJO 的 toString() 中的某些 JSONObject 键
Remove certain JSONObject keys in the toString() of a POJO
我在删除 JPA POJO 的 toString()
中的一些 JSONObject 键时遇到问题。我只是不希望它们显示在 toString()
中,同时将它们保留在 POJO 中,以便我可以使用它们。我可以设法在父实体中删除它们,但我无法在子实体中执行此操作。下面是我在父实体中的 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
仅在父实体中消失。它们仍然存在于儿童中。如何删除子实体中的一些键?谢谢你。
您可以使用 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();
和预期处理代码移动到单独的 class 以避免为每个 toString()
调用创建新的 ObjectMapper 对象。
我在删除 JPA POJO 的 toString()
中的一些 JSONObject 键时遇到问题。我只是不希望它们显示在 toString()
中,同时将它们保留在 POJO 中,以便我可以使用它们。我可以设法在父实体中删除它们,但我无法在子实体中执行此操作。下面是我在父实体中的 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
仅在父实体中消失。它们仍然存在于儿童中。如何删除子实体中的一些键?谢谢你。
您可以使用 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();
和预期处理代码移动到单独的 class 以避免为每个 toString()
调用创建新的 ObjectMapper 对象。