Я изо всех сил, чтобы выяснить, почему я получаю пустое поле при десериализации объекта JSonобъект десериализации 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, но каким-то образом оставляя одну п ield как null.
Проблема с кодировкой? в документации API говорится, что для кодировки должно быть установлено значение System.Text.Encoding.Default.
добавление строк вроде
content.Headers.ContentEncoding.Clear();
content.Headers.ContentEncoding.Add("Default"); // "Default" or "utf-8"
не помогают.
Все имена полей в моем классе соответствуют ключам объекта json, и их тип идентичен.
Я уверен, что это простой вопрос, но я застрял в этом вопросе.
Большое спасибо!
эй спасибо за ваш ответ. Если я это сделаю, мне придется изменить свой метод на открытый асинхронный процесс, и в этом случае Visual Studio скажет мне, что тип возврата должен быть «void» или «Task» –
Это правильно. Или вы используете несинхронную версию функции. Если он существует. – Matthias
Ваш тип возврата - это 'Задача' –
Matthias