如何在c#中检索嵌套json对象

本文关键字:嵌套 json 对象 检索 | 更新日期: 2023-09-27 18:09:30

条带传输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 stripeccharge对象。我不知道如何通过事务进行迭代……我真正需要的是每个人的身份。希望看到"事务"作为c# IEnumerable对象。

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

我发现具体的项目是在["transactions"]["data"][0]["id"]下,但可能有不止一个,所以,仍在研究如何把它们弄出来并投射它们…我想我已经接近了,但似乎应该有一种更优雅的方式。

编辑,

谢谢Andrew,所以即使我有所有的收费数据,它是传入数据。我要做的是使用事件获取id,然后调用从我自己的端获取charge对象,以防止任何事件欺骗。这意味着我现在不用担心选角的问题。这是我的解决方案,如果有更好的方法,请随时提出建议

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#中检索嵌套json对象

只是为了完整:事务下的数据看起来像一个数组,所以应该能够索引到它们..

如果你将来需要访问任何其他字段,你可以构造c#对象,但考虑到webhook的第三方dance,你已经做的可能不值得,因为你只需要id。