Событие 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);
Другие вопросы по тегам