替换 WCF 默认 JSON 序列化
Posted
技术标签:
【中文标题】替换 WCF 默认 JSON 序列化【英文标题】:Replace WCF default JSON serialization 【发布时间】:2011-10-11 04:33:31 【问题描述】:是否可以替换 WCF 的默认 JSON 序列化(我目前正在使用 webHttp
行为进行测试),并将 application/json
作为 MIME 类型传递。特别是,我不喜欢默认情况下每个属性都是键/值对,例如:
"Key":"PropertyName", "Value":"PropertyValue"
我仅将服务用于支持 JSON 的端点(使用 jQuery + WCF 请求数据)。
【问题讨论】:
看看这是否有帮助:***.com/questions/8372076/… 【参考方案1】:您可以使用消息格式化程序来更改用于处理 JSON 的序列化程序。 https://docs.microsoft.com/en-us/archive/blogs/carlosfigueira/wcf-extensibility-message-formatters 的帖子显示了如何将默认序列化程序 (DataContractJsonSerializer) 更改为另一个 (JSON.NET) 的示例。
【讨论】:
谢谢卡洛斯。这并不容易,但我终于让它工作了。(我忘记了 contentTypeMapper :))) 精彩的博文。即使使用 NewtonSoft 的变体,也可以非常轻松地支持 json 和 XML 格式。 :)【参考方案2】:考虑创建与您的 JSON 对象结构相对应的类。在这种情况下,您不必像这样使用Dictionary<>
:
[DataContract]
public class Customer
[DataMember(Name="name")]
public string Nameget;set;
[DataMember(Name="id")]
public int IDget;set;
这会被序列化为:
"name": "name-value", "id": "id-value"
当然,这只是您已有的替代方案,可能不适用。
【讨论】:
以上是关于替换 WCF 默认 JSON 序列化的主要内容,如果未能解决你的问题,请参考以下文章