如何在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#对象,但考虑到webhook的第三方dance,你已经做的可能不值得,因为你只需要id。