PostAsJsonAsync深层序列化

时间:2015-08-19 17:13:46

标签: c# serialization asp.net-web-api2

我正在使用PostAsJsonAsync将参数传递给web api服务,如此

public T Save<T>(string url, T item) where T : class
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = _dbServiceUriProvider.GetUri();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var response = client.PostAsJsonAsync(url, item).Result;
            if (!response.IsSuccessStatusCode)
            {
                throw new DbServiceException("Error in DbServiceDataSaver:\r\n" + response.ReasonPhrase);
            }
            T returnVar = response.Content.ReadAsAsync<T>().Result;
            return returnVar;
        }
    }

问题是这只是序列化我传递的对象而不是任何子对象。例如,如果我有一个具有HashSet成员的类Foo&lt; Bar&gt; Bars没有被序列化。这是因为HashSets无法序列化还是其他事情发生在这里?

2 个答案:

答案 0 :(得分:1)

在类级别使用Serializable属性,在属性级别使用datamember,它将适用于您或使用json.serializeObjectmethod。 并且为了查看json数据不需要fiddler只需安装一个名为json viewer的插件,它将在浏览器本身上以json格式显示您的数据。 [https://addons.mozilla.org/en-Us/firefox/addon/jsonview/][1]

答案 1 :(得分:0)

事实证明,我的类只有部分属性的[DataMember]属性,所以只有那些属性被序列化