c# - GoCardless 事件不会反序列化

标签 c# json asp.net-mvc json.net gocardless

我正在尝试实现新的 GoCardless API,但在处理 webhook 时遇到问题。

我已经读取了对字符串的响应,方法是:

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);

但是,这总是给我一个空白对象,所有属性都设置为 null。

Event 类的源代码可以在这里找到:https://github.com/gocardless/gocardless-dotnet/blob/master/GoCardless/Resources/Event.cs

为什么这不会反序列化为对象?

最佳答案

很确定 JSON 是一个事件数组。所以首先你需要一个根对象:

public class Root
{
    public List<GoCardless.Resources.Event> Events { get; set; }
}

现在反序列化为该类型:

var events = JsonConvert.DeserializeObject<Root>(requestContent);

关于c# - GoCardless 事件不会反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45413721/

相关文章:

c# - 如果与 NaN 的比较始终返回 false,我如何将 float 与 NaN 进行比较?

c# - 使用 JToken.Parse 解析 JSON - 帮助我将一行代码从 C# 转换为 VB

c# - 为所有 View 定义一个部分

javascript - 如何将 JSON 序列化对象转换为 JS 对象,以便可以访问其属性?

asp.net-mvc - 如何在 asp.net mvc 的关系表/模型中包含 ApplicationUser

asp.net - aspnet-core web api 的基于 token 的身份验证

c# - 使用 linq 查询输出列表/其他数据结构

json - Powershell 7.2 : ConvertFrom-Json - Date Handling

json - 在 Swift 中创建 JSON 数组

asp.net-mvc - IIS7 网址重写 - 从 {any}.aspx 重定向到 {any}