2011-12-24 7 views
2

最近、私はいくつかの情報をWebサービスとして公開するためにrestletを使用します。 jettyサーバーと同じコードホストですが、別のサーバーに2つのバージョン結果があります。Jsonの出力は、レシートとは異なります

私はwebservice "http://.....api/currencies.json"と呼ぶと、結果をjson形式に変換するためにjackson拡張子を使用しますが、なぜ別のバージョンになったのかわかりません。

誰もが問題を見つけ出すのを助けることができますか、ありがとう!

これはコードであり、私はrestlet拡張子を使用します:json、xml、jackson、xstream。

@Get("json|xml") 
public List<CurrencyInfoDTO> represent() { 
    return ...; 
} 

@XStreamAlias("currency") 
public class CurrencyInfoDTO { 

    protected String code; 

    protected String sign; 
    .... 
} 

出力バージョン1:

{ 
    "list": [ 
     { 
      "currency": [ 
       { 
        "code": "CNY", 
        "sign": "¥", 
        "rate": 1 
       }, 
       { 
        "code": "HKD", 
        "sign": "HK$", 
        "rate": 0.8145 
       }, 
      ] 
     } 
    ] 
} 

出力バージョン2:

[ 
    { 
     "code": "CNY", 
     "sign": "¥", 
     "rate": 1 
    }, 
    { 
     "code": "HKD", 
     "sign": "HK$", 
     "rate": 0.8145 
    } 
] 

バージョン2がために、私のローカルマシンであるため、バージョン1用のサーバーは、Amazon AWSでのホスト、およびサーバであり、開発。

バージョン1はオブジェクトとして出力され、バージョン2は配列として出力されると思います。

ローカルマシンでjackson拡張子を削除しようとすると、バージョン1として出力されるので、バージョン1はxstream拡張機能を使用しています。バージョン2はjackson拡張機能を使用していますが、メソッド出力?

ありがとうございます! リック

答えて

2

クラスパス内のRestlet拡張の相対位置は重要です。 org.restlet.ext.jacksonをorg.restlet.ext.xstreamの前に入れようとしています。

WARを使用している場合は、Restletエンジンでコンバータヘルパーの順序を手動で調整することもできます。

+0

私はWARを使用していますが、私はそれを確認します。リプレイのおかげで。 – ruochao

関連する問題