4

このメソッドを struts アクションに追加しました。

public String execute() {
    long start = System.currentTimeMillis();
    simDetails = new SIMDetails();
    return GET_SIM_DETAILS;
}

struts構成ファイルに以下のアクションを追加し、

<result type="json" name="getSIMDetails">
    <param name="noCache">true</param>
    <param name="includeProperties">simDetails.*</param>
</result>

次に、JSON応答の下になりました

{
    "simDetails": {
        "void": null,
        "ban": null,
        "currentTariff": null,
        "currentTariffDescription": null,
        "defaultTariff": null,
        "defaultTariffDescription": null,
        "imsi": null,
        "packageItemId": null,
        "simSerialNumber": null,
        "simStatus": null,
        "simStatusCC": null,
        "status": null,
        "subscriberNumber": null,
        "subsidaryCode": null
    }
}

しかし、上記の代わりにこの応答が必要です。

{
    "void": null,
    "ban": null,
    "currentTariff": null,
    "currentTariffDescription": null,
    "defaultTariff": null,
    "defaultTariffDescription": null,
    "imsi": null,
    "packageItemId": null,
    "simSerialNumber": null,
    "simStatus": null,
    "simStatusCC": null,
    "status": null,
    "subscriberNumber": null,
    "subsidaryCode": null
}

上記のフィールドをアクションクラスに追加せずに必要な応答を取得するためのアイデア。

4

2 に答える 2

3

ドキュメントのルート オブジェクトセクションでroot指定されている属性を使用できます。

シリアル化するルート オブジェクトを指定するには、"root" 属性 (OGNL 式) を使用します。

あなたの場合:

<result type="json" name="getSIMDetails">
    <param name="noCache">true</param>
    <param name="root">simDetails</param>
</result>

PS:この回答は読む価値があるかもしれません。また、その質問に対する他の回答では、@IntelliData によって提案された Stream テクニックも見ることができます。

于 2015-05-12T14:42:07.227 に答える