相关疑难解决方法(0)

有什么方法可以使DataContractJsonSerializer正确序列化字典?

DataContractJsonSerializer无法正确序列化字典.

{"abc":"xyz","def":42} 例如,JavaScriptSerializer序列化字典,而DataContractJsonSerializer则提供[{"Key":"abc","Value":"xyz"},{"Key":"def","Value":42}].

这确实有问题,我想知道如何在WCF服务中正确序列化Dictionary对象.我正在寻找一个需要最少努力的解决方案.

参考:http://msdn.microsoft.com/en-us/library/bb412170.aspx

这是我最终在WCF中正确使用字典串行化的解决方法:http://social.msdn.microsoft.com/forums/en-US/wcf/thread/765f1569-0422-4471-8ec2-1d03b2026771

.net wcf serialization

50
推荐指数
4
解决办法
5万
查看次数

如何将Json.Net设置为WCF REST服务的默认序列化程序

在Serialize/DeSerialize实体并使用JSON.NET时,是否可以覆盖默认的WCF DataContractSerializer行为?

我有以下服务合同来处理City实体.出于设计原因,City实体具有IsReference = true,因此默认的DataContractSerializer会引发错误.

对于"GET"方法,我可以使用JsonConvert.DeserializeObject处理这种情况,但是使用"PUT,POST,DELETE"方法DataContractSerializer优先,并且失败抱怨IsReference实体无法序列化.

我发现这个Post实现IOperationBehavior并提供我自己的Serializer但我不知道如何将Json.NET与此集成.而且我认为应该有更直接的方法.

我很感激有关此方案的任何帮助或指导,或对其他方法的建议.

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class CityService
{
    [Description("Get all Cities")]  
    [WebGet(UriTemplate = "")]
    public Message Cities()
    {

    }

    [Description("Allows the details of a single City to be updated.")]
    [WebInvoke(UriTemplate = "{code}", Method = "PUT")]
    public Message UpdateCity(string code, City city)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢

霍山

rest wcf json .net-4.0 json.net

22
推荐指数
1
解决办法
2万
查看次数

标签 统计

wcf ×2

.net ×1

.net-4.0 ×1

json ×1

json.net ×1

rest ×1

serialization ×1