2012-01-07 3 views
2

ServiceStackのDataContract API + * ServiceClientを使用して、標準のXML/JSON RESTサービスから適切なデシリアライズを取得するのに少し問題があります。たとえば、私たちは(JSONを取得するには、ヘッダーを受け入れる使用)次の出力を取る場合:非ServiceStack RESTサービスでのServiceStack Clientの使用

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

  1. はどのようにしてから JSON出力と敬遠しがちXML出力の両方を処理するために、モデルオブジェクトを構成については行くだろうそのサービスは(012sonを得るために ヘッダーを受け入れます)?

  2. はあなたが のDataContractおよびDataMemberプロパティで明示的に「名前」パラメータが適切な 直列化復元を取得するために属性を提供するために必要なことでしょうか?

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

  4. 我々がシームレスに 我々が を対処するためのサードパーティ形式のを持っている私たち自身の直列化復元メカニズムを統合する?JsonRestClientAsyncにおけるジェネリックのFuncデリゲートAPIのいくつかの並べ替えを得ることができますか

はい私は、明示的なデシリアライズを行うためにServiceStack.Textを使用することができます。それは私だけだろうよりも、サードパーティのWebサービス(すなわちないServiceStackのWebサービス)なら、私はかなりのすべての私の.NETプロジェクトでその依存関係に:-)

おかげで、

Anuj

答えて

5

を取りますそれらのフォーマットの1つを解析しようとすると、私は自分のAPIを変更するとJSONをより好きな回復力にすることを好みます。 IMO同じモデルでさまざまなフォーマットをサポートしようとするのは失われた命題であり、いつでも簡単に破ることができます。

ServiceStackのJSONシリアライザについては、最新のリリースではプロパティが大文字と小文字を区別しないため、代わりにJsConfig.EmitCamelCaseNames=trueを設定して、ラクテアケースの名前を表示させることができます。 See this unit test

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

+0

'JsConfig.EmitCamelCaseNames = true'は私が個人的に探していたものでした。ありがとう! :) –

関連する問題