C# 是否可以使用未知参数名反序列化JSON而不使用自定义转换器?
如果这是重复的,我很抱歉,但是我看到的相关答案中没有一个与我正在处理的格式类似的JSON。我正在使用具有以下JSON格式的API响应:C# 是否可以使用未知参数名反序列化JSON而不使用自定义转换器?,c#,json,C#,Json,如果这是重复的,我很抱歉,但是我看到的相关答案中没有一个与我正在处理的格式类似的JSON。我正在使用具有以下JSON格式的API响应: { "KnownPropName": [ { "DynamicPropName": [ { "KnownProp1": "value", "KnownProp2": "value" }, { "KnownProp1": "value", "KnownProp2": "valu
{
"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
类
小提琴手:这没用吗?-这个答案在相关问题的列表中,在不使用转换器的情况下最接近于解决这个问题。我很好奇是否有另一种方法来构造类,使其在不进行任何其他操作的情况下序列化,但从外观上看,我将使用此解决方案。谢谢我没有想到使用一系列字典,非常感谢!!很高兴我能帮忙。