繁体   English   中英

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

[英]How to retrieve nested json objects in 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
}

仅出于完整性考虑:事务下的数据看起来像一个数组,因此应该能够对其进行索引。

如果将来需要访问任何其他字段,则可以构造c#对象,但是考虑到webhook 3rd party舞,您已经不值得这样做,因为您只需要id。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM