-1

これらのプロパティがシリアル化されないようにしようとしていますが、なんらかの理由で何をしてもシリアル化されてクライアントに送信されます。just を@JsonIgnoreProperties({"doBefore","doAfter","doAfterComplete"})使用してみました 、getter だけを使用して@JsonIgnoreみました 、両方を一緒に試しましたが、違いはないようです。私のクラスは次のようになります。

@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各ゲッターとセッターで使用できます。どれが無視されているかを簡単に確認できるので、私はこれが好きです。さらに、シリアル化では無視され、逆シリアル化では無視されないプロパティを持つことができます。(これは、リモート クライアントが同じコードを使用していないことを前提としています。)

ジャージー/ジャクソンでうまくいきます。どのjaxrsフレームワークを使用していますか?

Jersey の場合、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 に答える