如何从 C# 中的 json 父数组获取嵌套对象
How to get a nested object from an json parent array in c#
在 C# 中 Controller.cs 如何从“父”对象获取“子”或“嵌套”对象。我目前能够检索 未 嵌套的对象的值,但我还需要能够获取某些子对象的值。
请查看下面我当前工作的代码,当对象 NOT 嵌套时,它实际检索数据。我能够获取值 invoiceNumber、email 和 paymentMethod。
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
var obj = JObject.Parse(result);
string invoiceNumber = (string)obj["invoiceNumber"];
string email = (string)obj["email"];
string paymentMethod = (string)obj["paymentMethod"];
}
现在,当我尝试获取嵌套对象的数据时,我只是重新调整为 NULL。当我在 visual studio JSON Visualizer 中调试时,这些值实际上不是空的,它们有值,但我只是不知道如何编写我需要的语法来获取这些“子”或“嵌套”对象。因此,正如您在下面的代码中看到的那样,我尝试以我能想到的所有方式为 amountSaved 调用此值,但每次都只是 returns NULL。
string rate = (string)obj["discounts.[0].amountSaved"];
string rate2 = (string)obj["discounts.amountSaved"];
string rate3 = (string)obj["discounts amountSaved"];
string rate4 = (string)obj["discounts:amountSaved"];
string rate5 = (string)obj["{discounts}:amountSaved"];
string rate6 = (string)obj["{discounts}.amountSaved"];
string rate7 = (string)obj["discounts.{amountSaved}"];
string rate8 = (string)obj["{discounts.amountSaved}"];
我认为解决方案可能是我首先调用父对象,在本例中称为 discounts,然后在句点或冒号或 space( . :) 或其他东西,我输入子对象的名称,在本例中为 amountSaved。那没有用。
请看下面我的截图。这是我在 visual studio 中调试并使用 JSON Visualizer 时的情况。您可以理解我所说的 discounts 是具有子值(例如 amountSaved)的父对象的意思。您还可以看到它的值为 0.75。您还可以看到我所说的其他未嵌套值的意思,我可以像 shippingMethod 一样获取这些值。
我怎样才能做到这一点?
谢谢。
当你使用方括号时,你不应该放 .它们之间。你可以省略方括号并仅在你反序列化对象时使用点语法,而不仅仅是解析它
string rate = (string)obj["discounts"][0]["amountSaved"];
在 C# 中 Controller.cs 如何从“父”对象获取“子”或“嵌套”对象。我目前能够检索 未 嵌套的对象的值,但我还需要能够获取某些子对象的值。
请查看下面我当前工作的代码,当对象 NOT 嵌套时,它实际检索数据。我能够获取值 invoiceNumber、email 和 paymentMethod。
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
var obj = JObject.Parse(result);
string invoiceNumber = (string)obj["invoiceNumber"];
string email = (string)obj["email"];
string paymentMethod = (string)obj["paymentMethod"];
}
现在,当我尝试获取嵌套对象的数据时,我只是重新调整为 NULL。当我在 visual studio JSON Visualizer 中调试时,这些值实际上不是空的,它们有值,但我只是不知道如何编写我需要的语法来获取这些“子”或“嵌套”对象。因此,正如您在下面的代码中看到的那样,我尝试以我能想到的所有方式为 amountSaved 调用此值,但每次都只是 returns NULL。
string rate = (string)obj["discounts.[0].amountSaved"];
string rate2 = (string)obj["discounts.amountSaved"];
string rate3 = (string)obj["discounts amountSaved"];
string rate4 = (string)obj["discounts:amountSaved"];
string rate5 = (string)obj["{discounts}:amountSaved"];
string rate6 = (string)obj["{discounts}.amountSaved"];
string rate7 = (string)obj["discounts.{amountSaved}"];
string rate8 = (string)obj["{discounts.amountSaved}"];
我认为解决方案可能是我首先调用父对象,在本例中称为 discounts,然后在句点或冒号或 space( . :) 或其他东西,我输入子对象的名称,在本例中为 amountSaved。那没有用。
请看下面我的截图。这是我在 visual studio 中调试并使用 JSON Visualizer 时的情况。您可以理解我所说的 discounts 是具有子值(例如 amountSaved)的父对象的意思。您还可以看到它的值为 0.75。您还可以看到我所说的其他未嵌套值的意思,我可以像 shippingMethod 一样获取这些值。
我怎样才能做到这一点? 谢谢。
当你使用方括号时,你不应该放 .它们之间。你可以省略方括号并仅在你反序列化对象时使用点语法,而不仅仅是解析它
string rate = (string)obj["discounts"][0]["amountSaved"];