2

ServiceStack の DataContract API + *ServiceClient を使用して、標準の XML/JSON REST サービスから適切な逆シリアル化を取得するのに少し問題があります。たとえば、次の出力を取得した場合 (accept ヘッダーを使用して json を取得します):

http://rxnav.nlm.nih.gov/REST/RxTerms/rxcui/198440/allinfo

  1. そのサービスからの JSON 出力と hte XML 出力の両方を処理するモデル オブジェクトをどのように構築しますか (json を取得するために受け入れヘッダーを使用します)。

  2. 適切な逆シリアル化を取得するために、DataContract および DataMember 属性に明示的な「名前」パラメーターを指定する必要がありますか?

  3. ServiceStack は XML / JSON オブジェクト名をモデル内のプロパティ名とどのように比較しますか? 大文字と小文字は区別されますか?

  4. JsonRestClientAsync である種の汎用 Func デリゲート API を取得して、サードパーティのフォーマットを処理する独自の逆シリアル化メカニズムをシームレスに統合できますか?

はい、ServiceStack.Text を使用して明示的な逆シリアル化を実行できることはわかっています。私はすべての.NETプロジェクトでその依存関係をほとんど引き受けています:-)

ありがとう、

アヌジ

4

1 に答える 1

5

サードパーティのWebサービス(つまり、ServiceStack Webサービスではない)の場合、それらの形式の1つだけを解析しようとする場合、APIを変更した場合の復元力を高めるために、個人的にJSONを好みます。IMOは、同じモデルでさまざまな形式をサポートしようとするという提案を失うことになります。彼らはいつでも簡単にそれを破ることができます。

ServiceStackのJSONシリアライザーに関しては、最新のリリースでは、プロパティで大文字と小文字が区別さJsConfig.EmitCamelCaseNames=trueれず、代わりにキャメルケース名を出力するように設定できます。この単体テストを参照してください

また[DataMember(Name="custom")]、プロパティ名を生成された名前とは異なるものにする場合は、パラメータを尊重するようになりました。

于 2012-01-08T13:27:46.963 に答える