如何在C#中检索嵌套的json对象?

时间:2014-06-20 18:05:40

标签: c# json stripe-payments stripe.net

Stripe Transfer 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。想看看&#34;交易&#34;作为C#IEnumerable对象。

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

我发现具体项目在["transactions"]["data"][0]["id"]下,但可能不止一个,所以仍然在研究如何将它们拿出并投下它们......想想我已经关闭但是似乎应该有一种更优雅的方式。

EDIT,

感谢Andrew,所以即使我拥有所有的费用数据,它也是传入的数据。所以我要做的就是使用事件来获取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
}

1 个答案:

答案 0 :(得分:0)

仅为完整性: 事务下的数据看起来像一个数组,所以应该能够索引它们。

如果您将来需要访问任何其他字段,您可以构建c#对象,但是如果您只需要id,那么您已经在做的webhook第三方舞会可能不值得。