2014-06-20 76 views
0

Stripe Transfer JSON如何检索C#中嵌套的JSON对象?

我试图获得与传输相关的所有费用ID。

var json = new StreamReader(context.Request.InputStream).ReadToEnd(); 

var stripeEvent = StripeEventUtility.ParseEvent(json); 

StripeTransfer stripeTransfer; 
switch (stripeEvent.Type) 
{ 
    case "transfer.created": 
     stripeTransfer = Stripe.Mapper<StripeTransfer>.MapFromJson(stripeEvent.Data.Object.ToString()); 
     var transferId = stripeTransfer.Id; 
     stripeTransfer = _stripeManager.GetTransfer(transferId); 

     foreach (var charge in stripeEvent.Data.Object["transactions"]) 
     { 

     } 

     _stripeManager.ProcessTransfer(stripeTransfer); 
     break; 

在Visual Studio的即时窗口,stripeEvent.Data.Object["transactions"]显示我想要的数据,所以我知道,JSON是在正常越来越吸引。这些交易是一个收费的集合,它们与我的.net StripeCharge对象相匹配。我无法弄清楚如何迭代事务......我真正需要的是每个事务的ID。希望将“事务”看作C#IEnumerable对象。

(有问题的json链接到这篇文章的顶部)让我知道是否需要更多信息。

我发现具体项目是在["transactions"]["data"][0]["id"],但可能有不止一个,所以仍然在如何让他们出来,并施展他们......认为我很接近,但似乎应该有一个更优雅的做法。

编辑,

感谢安德鲁,所以即使我有所有的充电数据,它是输入数据。所以我要做的就是使用事件来获取id,然后通过调用来从我自己的末端获取费用对象,以防止发生任何事件欺骗。所以这意味着我现在不必担心投射。这里是我的解决方案,可随时告知,如果有更好的方式来做到这一点

for (int i = 0; i < Int32.Parse(stripeEvent.Data.Object["transactions"]["total_count"].ToString()); i++) 
{ 
    string chargeId = stripeEvent.Data.Object["transactions"]["data"][i]["id"].ToString(); 
    // do stuff with it 
} 
+0

那么你在这个foreach上看到的是什么结构在“费用”上徘徊? – Andrew

+1

事务下的数据看起来像一个数组,所以应该能够索引到它们? – Andrew

+0

ya 发布我认为正在工作的更新...这是所有来自webhook事件,我在本地测试,所以它的屁股调试真正的痛苦..要通过第三方位置隧道webhook暂时...凌乱 –

回答

0
只是为了完整性

: 下交易的数据看起来像一个数组所以应该能够索引到他们..

如果您将来需要访问任何其他字段,您可以构建c#对象,但由于您只需要身份证明,因此您已经做的webhook第三方舞会可能不值得。