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

标签 java json jpa tostring

我在删除 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 仅在父实体中消失。它们仍然存在于 child 中。如何删除子实体中的某些键?谢谢。

最佳答案

您可以使用 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 对象。

关于java - 删除 POJO 的 toString() 中的某些 JSONObject 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59610374/

相关文章:

java - JPA - 以编程方式增加序列中的数字字段

java - JPA Hibernate 映射超过 2 个实体

java - 在intellij ide中查找与某个类相关的信息

java - 使用java从url下载文件时出现异常

java.lang.ClassCastException : org. hibernate.hql.ast.tree.SqlNode 无法转换为 org.hibernate.hql.ast.tree.FromReferenceNode

javascript - 从mysql结果数组中获取值

hibernate - 如何使用 JPA CriteriaBuilder 查询执行外连接?

java - Bottom Sheet 在 EXPANDED 和 HIDDEN 之间停止

java - 使用Java将Json对象转换为Parquet格式,无需转换为AVRO(不使用Spark、Hive、Pig、Impala)

json - Flutter:从json列表中获取数据