2012-01-07 154 views
2

我在使用ServiceStack的DataContract API + * ServiceClient從標準的XML/JSON REST服務中獲得適當的反序列化時遇到了一些問題。舉例來說,如果我們採取以下輸出(使用accept頭獲得JSON):將ServiceStack客戶端與非ServiceStack REST服務結合使用

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

  1. 你如何去構建一個模型對象來處理來自 JSON輸出和興田XML輸出兩個該服務(使用接受 標題獲取json)?

  2. 您是否需要在 DataContract和DataMember屬性中提供明確的「Name」參數才能獲得相應的 反序列化?

  3. ServiceStack如何比較模型中的XML/JSON對象名稱與 屬性名稱?他們是否區分大小寫?

  4. 我們能得到某種通用的Func鍵代表API的JsonRestClientAsync無縫集成 我們自己的反序列化機制,我們有第三方格式的處理 用?

是的我知道我可以使用ServiceStack.Text做顯式的反序列化。我幾乎承擔我所有的.NET項目是依賴:-)

感謝,

Anuj

回答

5

如果它是一個第三方的Web服務(即不是ServiceStack web服務)比我只會試圖解析其中一種格式,如果他們更改API,我個人更喜歡JSON以獲得更好的彈性。海事組織是一個試圖用相同模型支持不同格式的失敗主張,他們可以隨時輕易破解它。

對於ServiceStack的JSON序列化程序,在最新版本中 - 屬性不區分大小寫,您可以設置JsConfig.EmitCamelCaseNames=true以使其發出camelcase名稱。 See this unit test

如果您希望屬性名稱與生成的名稱不同,它現在還考慮參數[DataMember(Name="custom")]

+0

'JsConfig.EmitCamelCaseNames = true'就是我個人正在尋找的東西。謝謝! :) – 2013-02-06 09:08:57

相關問題