【发布时间】:2016-01-31 10:38:11
【问题描述】:
我一直在努力弄清楚为什么在反序列化 json 对象时会得到一个空字段
public OAuthResponse Get(OAuthRequest TEntity)
{
OAuthResponse Oauthresponse = new OAuthResponse();
using (System.Net.Http.HttpClient c = GetHttpClient())
{
string SerializedEntity = JsonConvert.SerializeObject(TEntity);
HttpContent content = new StringContent(SerializedEntity);
content.Headers.ContentType = new MediaTypeWithQualityHeaderValue(MessageType);
HttpResponseMessage Response = c.PostAsync(_Path, content).Result;
string Json = Response.Content.ReadAsStringAsync().Result;
Oauthresponse = JsonConvert.DeserializeObject<OAuthResponse>(Json);
}
}
到达线路时:
string Json = Response.Content.ReadAsStringAsync().Result;
悬停到“Json”,一切似乎都很好,因为没有字段为空
下一行的反序列化将反序列化的 json 对象分配给 OAuthResponse 对象,但不知何故将一个字段保留为空。
是编码问题吗?在 API 文档中,它说编码必须设置为 System.Text.Encoding.Default。
添加类似
的行content.Headers.ContentEncoding.Clear();
content.Headers.ContentEncoding.Add("Default"); // "Default" or "utf-8"
不要帮忙。
我的类中所有字段的名称都与 json 对象的键匹配,并且它们的类型相同。
我很确定这是一个简单的问题,但我被困在这一点上。
非常感谢!
【问题讨论】:
标签: c# json serialization deserialization