[英]How to retrieve nested json objects in C#?
我正在尝试获取与转账相关的所有费用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.