本文介绍了将ServiceStack客户端与非ServiceStack REST服务配合使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用ServiceStack的DataContract API+*ServiceClient从标准的XML/JSON REST服务中获得适当的反序列化时遇到了一些问题。例如,如果我们采用以下输出(使用Accept Header获取json):

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

  1. 如何构建模型对象以处理来自该服务JSON输出和HTE XML输出(使用Accept获取json的标头)?

  2. 您是否需要在DataContract和DataMember属性以获取相应的反序列化?

  3. ServiceStack如何将XML/JSON对象名称与模型中的属性名称?它们区分大小写吗?

  4. 我们能否在JsonRestClientAsync中无缝地获得某种泛型Func委托API集成我们自己的反序列化机制,其中我们需要处理第三方格式与?

是的,我知道我可以使用ServiceStack.Text进行显式反序列化。我几乎在我的所有.NET项目中都采用了这种依赖关系:-)

谢谢,

Anuj

JSON

如果它是第三方Web服务(即不是ServiceStack Web服务),那么我只会尝试解析它们的一种格式,我个人更喜欢推荐答案,以便在他们改变API时具有更好的弹性。如果尝试用相同的模型来支持不同的格式,这将是一个失败的提议,他们随时都可以轻易地打破这一点。

对于ServiceStack的JSON序列化程序,在最新版本中,属性不区分大小写,您可以设置JsConfig.EmitCamelCaseNames=true让它发出CamelCase名称。See this unit test

如果希望属性名称与生成的名称不同,它现在还会考虑[DataMember(Name="custom")]参数。

这篇关于将ServiceStack客户端与非ServiceStack REST服务配合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 20:39