问题描述
我在使用ServiceStack的DataContract API+*ServiceClient从标准的XML/JSON REST服务中获得适当的反序列化时遇到了一些问题。例如,如果我们采用以下输出(使用Accept Header获取json):
http://rxnav.nlm.nih.gov/REST/RxTerms/rxcui/198440/allinfo
如何构建模型对象以处理来自该服务JSON输出和HTE XML输出(使用Accept获取json的标头)?
- 您是否需要在DataContract和DataMember属性以获取相应的反序列化?
ServiceStack如何将XML/JSON对象名称与模型中的属性名称?它们区分大小写吗?
我们能否在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服务配合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!