【发布时间】:2016-01-04 13:11:22
【问题描述】:
我有一个对象,我将其转换为 json 以便将其发送到 Web 服务。 我在类中添加了一个返回 json 字符串的方法
public string ToJson()
{
return new JavaScriptSerializer().Serialize(this).ToLower();
}
HTTPClient.PutAsync() 方法采用 StringContent 对象,我这样创建:
var content = new StringContent(object.ToJson(), Encoding.UTF8, "application/json");
我可以致电PutAsync(),一切正常。
我最近发现了一种不同的序列化方法,它使用 [DataContract]、[DataMember]、DataContractJsonSerializer 和 Stream 来序列化对象。我想改用这种方法,因为它可以通过属性对结果进行更多控制,但需要更多样板代码(写入流、重新定位、读取等)。
鉴于我使用 Data 属性来指定我的对象应如何序列化,我如何指定应使用 DataContractJsonSerializer 对其进行序列化?最好,我可以简单地将对象传递给 StringContent 而无需显式方法调用,如下所示:
var content = new StringContent(object, Encoding.UTF8, "application/json");
类似于在某些情况下如何隐式调用ToString(),我想知道是否有任何理解如果我将内容类型指定为"application/json",则传递的对象应序列化为json。
【问题讨论】:
标签: c# json serialization dotnet-httpclient datacontractjsonserializer