2012-01-07 107 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

相关问题