【问题标题】:Replace WCF default JSON serialization替换 WCF 默认 JSON 序列化
【发布时间】:2011-10-11 04:33:31
【问题描述】:

是否可以替换 WCF 的默认 JSON 序列化(我目前正在使用 webHttp 行为进行测试),并将 application/json 作为 MIME 类型传递。特别是,我不喜欢默认情况下每个属性都是键/值对,例如:

{"Key":"PropertyName", "Value":"PropertyValue"}

我仅将服务用于支持 JSON 的端点(使用 jQuery + WCF 请求数据)。

【问题讨论】:

标签: wcf json serialization


【解决方案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 Name{get;set;}

    [DataMember(Name="id")]
    public int ID{get;set;}
}

这会被序列化为:

{"name": "name-value", "id": "id-value"}

当然,这只是您已有的替代方案,可能不适用。

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 2016-01-26
    • 1970-01-01
    • 2011-09-30
    • 2014-09-30
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多