Java删除响应库中的属性

Java删除响应库中的属性,java,spring,response,mybatis,Java,Spring,Response,Mybatis,我正在使用Java与SpringMVC和MyBatis连接数据库。我有一个account表,对于某些查询,我需要所有字段,但对于其他查询,我需要删除一些属性 例如,为了在MyBatis查询之后显示基本信息,我有一些字段为null,其他字段为false,甚至为0,因为查询不需要它们。最初,我在我的回复栏中有这样一句话: { "accountName": "Pagosonline.com", "country": "CO", "commercialName": "PayU - Latam

我正在使用Java与SpringMVC和MyBatis连接数据库。我有一个account表,对于某些查询,我需要所有字段,但对于其他查询,我需要删除一些属性

例如,为了在MyBatis查询之后显示基本信息,我有一些字段为null,其他字段为false,甚至为0,因为查询不需要它们。最初,我在我的回复栏中有这样一句话:

{
  "accountName": "Pagosonline.com",
  "country": "CO",
  "commercialName": "PayU - Latam",
  "city": "Chiquinquirá",
  "location": null,
  "secureName": null,
  "description": null,
  "document": "8301097231",
  "localOperation": false,
  "address": null,
  "acceptInternationalTransactions": false,
  "balance": 0
}
因此,我使用了这个注释:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Account implements Serializable {...}
现在我有了这个没有空值的ResponseBody:

{
  "accountName": "Pagosonline.com",
  "country": "CO",
  "commercialName": "PayU - Latam",
  "city": "Chiquinquirá",
  "document": "8301097231",
  "localOperation": false,      
  "acceptInternationalTransactions": false,
  "balance": 0
}
但由于我没有在查询中使用最后3个字段,因此返回false和0。我一直在考虑的另一种方法是创建另一个实体模型,只包含所需的字段。但首先我想知道是否还有其他解决方案,可能是从ResponseBook中删除这些字段

预期的答复:

{
  "accountName": "Pagosonline.com",
  "country": "CO",
  "commercialName": "PayU - Latam",
  "city": "Chiquinquirá",
  "document": "8301097231"
}
您是否尝试过向Account类添加注释

@JsonIgnoreProperties(value = { "balance", "acceptInternationalTransactions", "localOperation" })
正如文件所说:

注释,可用于抑制 属性(序列化期间),或忽略JSON的处理 读取属性(在反序列化期间)


您可以使用
@JsonFilter
并根据自己的条件创建自己的
属性过滤器。它确实有很好的文档记录。

是的,但是对于使用此模型的所有方法,它都会忽略这些属性。我只需要在某些特定情况下忽略它们。你能试试这个
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)吗并且您是否尝试在字段中而不是在类级别中进行注释?也可以尝试
Include.NON_EMPTY
而不是
Include.NON_NULL