-1

我正在努力使这些属性不会被序列化,但由于某种原因,无论我做什么,它们仍然会被序列化并发送到客户端。我尝试过使用 just @JsonIgnoreProperties({"doBefore","doAfter","doAfterComplete"}),我尝试过@JsonIgnore在 getter 上使用 just ,并且我已经尝试过两者,但似乎没有什么不同。这是我的班级的样子:

@JsonIgnoreProperties({"doBefore","doAfter","doAfterComplete"})
public class Action
{
    //for reordering actions with the default actions
    private String doBefore;
    private String doAfter;
    private String doAfterComplete;

    private String eventId;
    private List<ActionArgument> arguments;
    //action to perform when this action is done
    private List<Action> onCompleteActions;

    public Action() {}

    public Action(String eventId, List<ActionArgument> arguments, List<Action> onCompleteActions)
    {
        this.eventId = eventId;
        this.arguments = arguments;
        this.onCompleteActions = onCompleteActions;
    }

    public String getEventId()
    {
        return eventId;
    }
    public void setEventId(String eventId)
    {
        this.eventId = eventId;
    }
    public List<ActionArgument> getArguments()
    {
        return arguments;
    }
    public void setArguments(List<ActionArgument> arguments)
    {
        this.arguments = arguments;
    }
    public List<Action> getOnCompleteActions()
    {
        return onCompleteActions;
    }
    public void setOnCompleteActions(List<Action> onCompleteActions)
    {
        this.onCompleteActions = onCompleteActions;
    }

    @JsonIgnore public String getDoBefore()
    {
        return doBefore;
    }

    public void setDoBefore(String doBefore)
    {
        this.doBefore = doBefore;
    }

    @JsonIgnore public String getDoAfter()
    {
        return doAfter;
    }

    public void setDoAfter(String doAfter)
    {
        this.doAfter = doAfter;
    }

    @JsonIgnore public String getDoAfterComplete()
    {
        return doAfterComplete;
    }

    public void setDoAfterComplete(String doAfterComplete)
    {
        this.doAfterComplete = doAfterComplete;
    }
}
4

1 回答 1

1

您可以@JsonIgnore在每个 getter 和 setter 上使用。我喜欢这个,因为它似乎更容易看出哪些被忽略了。另外,您可以将属性忽略以进行序列化,而不会将其忽略以进行反序列化。(这确实假设远程客户端没有使用相同的代码,不是吗。)

它适用于泽西/杰克逊。您使用的是什么 jaxrs 框架?

对于泽西岛,您还需要 web.xml 文件中的一个部分:

<servlet>
    <servlet-name>MyJaxRSServlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.mycompany.transformation</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

这是你告诉它扫描包com.mycompany.transformation.**的注释的地方。

于 2013-08-09T19:49:22.513 回答