根据java中的传入请求,选择和取消选择参数作为JSON的输出

根据java中的传入请求,选择和取消选择参数作为JSON的输出,java,Java,例如,我有一个URL为:/cid/{cid}/{action}的传入请求 对于路径变量{action},我可以有两个值,即{action}:1列表2文件 我的带有JSON输出参数的POJO类如下: 公共课区{ 私人援助; 私有字符串aName; 私有整数空间; 违反私有整数; 私有整数百分比; 私有整数级; private List space=new ArrayList;//此列表应取决于条件 公共区域整数辅助、字符串名称、整数所有空间、整数冲突、整数百分比、整数级别{ 这个。援助=援助; t

例如,我有一个URL为:/cid/{cid}/{action}的传入请求

对于路径变量{action},我可以有两个值,即{action}:1列表2文件

我的带有JSON输出参数的POJO类如下:

公共课区{ 私人援助; 私有字符串aName; 私有整数空间; 违反私有整数; 私有整数百分比; 私有整数级; private List space=new ArrayList;//此列表应取决于条件 公共区域整数辅助、字符串名称、整数所有空间、整数冲突、整数百分比、整数级别{ 这个。援助=援助; this.aName=aName; this.allSpaces=allSpaces; 这个水平=水平; 这是违反的; 这个百分比=百分比; } 公共整数getaId{ 返回援助; } 公共无效设置辅助整数辅助{ 这个。援助=援助; } 公共字符串getaName{ 返回aName; } 公共无效setaNameString aName{ this.aName=aName; } 公共区域添加空间{ space.adds; 归还这个; } 公共列表getSpace{ 返回空间; } 公共void setSpaceList空间{ 这个空间=空间; } 公共整数getAllSpaces{ 返回所有空间; } public void setAllSpacesInteger allSpaces{ this.allSpaces=allSpaces; } 公共整数{ 违反退货规定; } 违反了公共void setViolatedInteger{ 这是违反的; } 公共整数百分比{ 收益率; } 公共无效设置百分比整数百分比{ 这个百分比=百分比; } 公共整数getLevel{ 回报水平; } 公共void setLevelInteger级别{ 这个水平=水平; } } 我的输出不应该包含参数private List space=new ArrayList for action=List,而应该为action=tile显示它


如果有人能帮我做这件事,那将非常有帮助。

如果该类被序列化,并且您想将空间从序列化中排除到JSON,您可以将其标记为瞬态

在您想要决定是否发生这种情况的情况下,您可以将Area子类化
因此,您的控制器将调用ListArea或TileArea。

我得到了问题的答案

I初始化的私有列表空间=null;代替私有列表空间=新建ArrayList

并在我的pojo上添加了@JsonSerializeinclude=JsonSerialize.Inclusion.NON_NULL,如下所示

@JsonSerializeinclude=JsonSerialize.Inclusion.NON_NULL 公共课区{


现在,值==null的参数将不包括在序列化输出中,但如果需要,我可以使用constructur和retrive对其进行动态初始化以输出。

很抱歉,即使我将其设置为private transient List space=new ArrayList;它仍然包括在序列化中,但如果我使用@JsonIgnore pub注释属性的话lic List getSpace{return space;它被从序列化中排除,但如果我这样做,它将不再可重用。那么是否有其他方法}@user1642947,请将该列表保留在区域实现中,而是按照我的建议在子类中使用它。
private transient List<Space> space = new ArrayList<Space>();