如何从 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"];