替换 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 序列化的主要内容,如果未能解决你的问题,请参考以下文章

WCF REST 服务的 JSON.NET 序列化程序

WCF 无法反序列化 JSON 请求

.net core3.1 web api中使用newtonsoft替换掉默认的json序列化组件

在WCF中怎么实现接口反序列化和序列化为JSON

WCF传输1-你是否使用过压缩或Json序列化?

WCF REST Web 服务 - Json 的反序列化