Событие GoCardless не будет десериализовано
Я пытаюсь реализовать новый API GoCardless, но у меня возникают проблемы при работе с веб-хуками.
я прочитал ответ на строку, выполнив:
Stream req = Request.InputStream;
req.Seek(0, System.IO.SeekOrigin.Begin);
string requestContent = new StreamReader(req).ReadToEnd();
Это дает мне ответ JSON следующим образом:
"{\"events\":[{\"id\":\"EV000SDG4B5WRP\",\"created_at\":\"2017-07-31T08:17:16.202Z\",\"resource_type\":\"mandates\",\"action\":\"cancelled\",\"links\":{\"mandate\":\"MD0002010AE1MV\"},\"details\":{\"origin\":\"api\",\"cause\":\"bank_account_closed\",\"description\":\"The customer's account was disabled at your request.\"},\"metadata\":{}}]}"
Согласно документации, я должен быть в состоянии сделать
JsonConvert.DeserializeObject<GoCardless.Resources.Event>(requestContent);
Тем не менее, это всегда дает мне пустой объект со всеми свойствами, установленными на ноль.
Исходный код класса Event можно найти здесь: https://github.com/gocardless/gocardless-dotnet/blob/master/GoCardless/Resources/Event.cs
Почему это не десериализовать в объект?
1 ответ
Решение
Я уверен, что JSON - это массив событий. Итак, сначала вам нужен корневой объект:
public class Root
{
public List<GoCardless.Resources.Event> Events { get; set; }
}
Теперь десериализуем в этот тип:
var events = JsonConvert.DeserializeObject<Root>(requestContent);