Java删除响应库中的属性
我正在使用Java与SpringMVC和MyBatis连接数据库。我有一个account表,对于某些查询,我需要所有字段,但对于其他查询,我需要删除一些属性 例如,为了在MyBatis查询之后显示基本信息,我有一些字段为null,其他字段为false,甚至为0,因为查询不需要它们。最初,我在我的回复栏中有这样一句话: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
{
"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