2017-07-31 12 views
3

新しいGoCardless APIを実装しようとしていますが、ウェブフックの処理に問題があります。GoCardlessイベントDeserialiseがありません

私がやっにより、文字列への応答を読んで、次のよう

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\":{}}]}" 

ドキュメントによると、私はその後、できるはずですto do

JsonConvert.DeserializeObject<GoCardless.Resources.Event>(requestContent); 

しかし、これは空白のオブジェクトで、すべてのプロパティがnullに設定されています。

Eventクラスのソースコードはここで見つけることができます:https://github.com/gocardless/gocardless-dotnet/blob/master/GoCardless/Resources/Event.cs

は、なぜこれがオブジェクトにデシリアライズしないのだろうか?

答えて

4

JSONはイベントの配列です。

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

は今、そのタイプにdeserialise::私はあまりにもことを不思議に思っ

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

が、私は、私はエラーを取得することを試みるとき:だから最初は、rootオブジェクトが必要 '"現在のJSONオブジェクトをデシリアライズすることはできませんタイプがJSON配列を必要とするため(例:[1,2、...])、タイプ 'System.Collections.Generic.List'1 [GoCardless.Resources.Event]'にタイプ(例:{\ "name \":\ "value \ 3])を正しくデシリアライズするには –

+0

私のエラー - ルートオブジェクトが必要です - 編集しました – DavidG

+0

これはうまくいけば簡単ですし、各イベントごとに別々のコールを行った場合。 –

関連する問題