C# 是否可以使用未知参数名反序列化JSON而不使用自定义转换器?

C# 是否可以使用未知参数名反序列化JSON而不使用自定义转换器?,c#,json,C#,Json,如果这是重复的,我很抱歉,但是我看到的相关答案中没有一个与我正在处理的格式类似的JSON。我正在使用具有以下JSON格式的API响应: { "KnownPropName": [ { "DynamicPropName": [ { "KnownProp1": "value", "KnownProp2": "value" }, { "KnownProp1": "value", "KnownProp2": "valu

如果这是重复的,我很抱歉,但是我看到的相关答案中没有一个与我正在处理的格式类似的JSON。我正在使用具有以下JSON格式的API响应:

{
  "KnownPropName": [
  {
    "DynamicPropName": [
    {
      "KnownProp1": "value",
      "KnownProp2": "value"
    },
    {
      "KnownProp1": "value",
      "KnownProp2": "value"
    }]
  }]
}
我知道每个对象的参数名称,但“DynamicPropName”除外,我无法提前知道

我有以下课程设置:

private class TestResponse
{
    public TestOuter[] KnownPropName { get; set; }
}
private class TestOuter
{
    public TestInner[] TestInners { get; set; }
}
private class TestInner
{
    public string KnownProp1 { get; set; }
    public string KnownProp2 { get; set; }
}
如果我将属性名“testiners”更改为“DynamicPropName”,则所有内容都将进行反序列化,不会出现任何问题。但是,由于我不会提前知道实际的属性名,所以当“testiners”与相应的属性名不匹配时,我需要以某种方式进行此工作

我认为我不能使用字典,因为数组不包含字符串键,而是包含对象


我知道我可以使用自定义转换器来解决这个问题,但我想知道,如果不使用自定义转换器,这是否可能。有没有一种方法可以让JSON根据参数的顺序而不是名称进行反序列化?

从您给出的JSON示例中,我不明白为什么字典在这里不起作用。在我看来,
KnownPropName
实际上是一个字典数组,其中每个字典都有字符串键,表示动态属性名,值是
testiner
对象的数组

换句话说,像这样声明您的类:

private class TestResponse
{
    public Dictionary<string, TestInner[]>[] KnownPropName { get; set; }
}

private class TestInner
{
    public string KnownProp1 { get; set; }
    public string KnownProp2 { get; set; }
}
私有类TestResponse
{
公共字典[]KnownPropName{get;set;}
}
私家侦探
{
公共字符串KnownProp1{get;set;}
公共字符串KnownProp2{get;set;}
}
您不需要
TestOuter


小提琴手:

这没用吗?-这个答案在相关问题的列表中,在不使用转换器的情况下最接近于解决这个问题。我很好奇是否有另一种方法来构造类,使其在不进行任何其他操作的情况下序列化,但从外观上看,我将使用此解决方案。谢谢我没有想到使用一系列字典,非常感谢!!很高兴我能帮忙。