C# 如何访问Json对象的内部属性?

C# 如何访问Json对象的内部属性?,c#,json,C#,Json,我正在学习C#,我正在尝试解析json/xml响应,并检查每个键和值对。对于xml,我正在转换为json,因此我只有一个函数/脚本来处理这两种情况。我的问题是,我正在处理范围广泛的json响应,这些响应并不相似,在一些json响应中可能存在数组。我尝试访问json对象的“计数”作为检查数组的一种方法 注意:回答会有所不同。此示例适用于产品>产品>名称、数量和类别。下一个响应将发生变化,可以是国家>州>城市等等。我不能依赖于创建类,因为所有的响应都是不同的。另外,我正在进行自动化工作,以便它能够处

我正在学习C#,我正在尝试解析json/xml响应,并检查每个键和值对。对于xml,我正在转换为json,因此我只有一个函数/脚本来处理这两种情况。我的问题是,我正在处理范围广泛的json响应,这些响应并不相似,在一些json响应中可能存在数组。我尝试访问json对象的“计数”作为检查数组的一种方法

注意:回答会有所不同。此示例适用于产品>产品>名称、数量和类别。下一个响应将发生变化,可以是国家>州>城市等等。我不能依赖于创建类,因为所有的响应都是不同的。另外,我正在进行自动化工作,以便它能够处理任何扔到它身上的东西。

我正在使用的Json示例:

{
  "products": {
    "product": [
      {
        "name": "Dom quixote de La Mancha",
        "quantity": "12",
        "category": "Book"
      },
      {
        "name": "Hamlet",
        "quantity": "3",
        "category": "Book"
      },
      {
        "name": "War and Peace",
        "quantity": "7",
        "category": "Book"
      },
      {
        "name": "Moby Dick",
        "quantity": "14",
        "category": "Book"
      },
      {
        "name": "Forrest Gump",
        "quantity": "16",
        "category": "DVD"
      }
    ]
  }
我访问计数、名称和值的方式如下:

dynamic dyn = JsonConvert.DeserializeObject<dynamic>(jsonText);
foreach (JProperty property in dyn.Properties())
{
    string propname = property.Name;
    var propvalue = property.Value;
    int count = property.Count;
}
dynamic dyn=JsonConvert.DeserializeObject(jsonText);
foreach(dyn.Properties()中的JProperty属性)
{
string propname=property.Name;
var propvalue=property.Value;
int count=property.count;
}
有没有一种方法可以在不经过foreach循环的情况下访问这些文件,比如int count=dyn.count?我从中得到的是null,而不是实际值

对于上述示例,我的最终结果如下: 此响应包含产品>产品>5 x(名称、数量、类别)

对象的快速监视:
尝试将JSON反序列化为JObject,如下所示:

var jObject = JsonConvert.DeserializeObject<JObject>(jsonText);
var jObject=JsonConvert.DeserializeObject(jsonText);

您可以轻松地使用Newtonsoft.Json.Deserialize()从Json生成对象。下面是创建表示Json的类的方法。这回答了你的问题吗?大家好。我已经编辑了我的问题以添加更多的上下文。我无法生成和创建类,因为我将得到100个不同的响应,这些响应可能只会使用一次。@dudewhowanstolearn是我使用的是
dynamic dyn=JsonConvert.DeserializeObject(jsonText)。将其更改为
JObject dyn=JsonConvert.DeserializeObject(jsonText)
允许我访问这些值,而不是获取null。我仍在阅读和尝试不同的方法。谢谢。是的,这很有效。我还尝试了
JObject dyn=JsonConvert.DeserializeObject(jsonText)这也有效。谢谢