为简洁起见,重写问题。
我需要能够一次反序列化和/或将json字符串映射到多个具体对象,其中一些对象是嵌套的。我无法控制接收到的json字符串。我将如何去做呢?
示例:
// Example objects
public class ClassA
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
}
public class ClassB
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
public ClassC Nested { get; set; }
}
public class ClassC
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public string Prop3 { get; set; }
}
//Example "records" or rows
// All values
{
"ClassA.Prop1" : "Value"
"ClassA.Prop2" : "Value"
"ClassA.Prop3" : "Value"
"ClassB.Prop1" : "Value"
"ClassB.Prop2" : "Value"
"ClassB.Prop3" : "Value"
"ClassB.Nested.Prop1" : "Value"
"ClassB.Nested.Prop2" : "Value"
"ClassB.Nested.Prop3" : "Value"
}
// Partial Data
{
"ClassA.Prop1" : "Value"
"ClassA.Prop2" : "Value"
"ClassB.Prop1" : "Value"
"ClassB.Nested.Prop1" : "Value"
"ClassB.Nested.Prop2" : "Value"
}
答案 0 :(得分:0)
对问题的简洁性表示歉意。我已经为此苦苦挣扎了好几天了,当时我的头在键盘上跳动着,在没有清楚地思考问题的情况下提出了这个问题。
我刚刚解决了自己的问题。问题是我试图将序列化为json的非标准化数据集直接转换为具体对象,这很麻烦。它们是否嵌套是无关紧要的。答案是我一直都在看模型。我需要反序列化为表示电子表格中一行(或记录)的对象。从那里开始,很容易提取具体对象并建立所需的关系。简短的答案?我试图跳过一步。这是解决方案。
public class SpreadsheetRow
{
public string ClassAProp1 { get; set; }
public string ClassAProp2 { get; set; }
public string ClassAProp3 { get; set; }
public string ClassBProp1 { get; set; }
public string ClassBProp2 { get; set; }
public string ClassBProp3 { get; set; }
public string ClassCProp1 { get; set; }
public string ClassCProp2 { get; set; }
public string ClassCProp3 { get; set; }
public ClassA GetClassA()
{
return new ClassA
{
Prop1 = ClassAProp1,
Prop2 = ClassAProp2,
Prop3 = ClassAProp3,
};
}
public ClassB GetClassB()
{
return new ClassB
{
Prop1 = ClassBProp1,
Prop2 = ClassBProp2,
Prop3 = ClassBProp3,
Nested = new ClassC
{
Prop1 = ClassCProp1,
Prop2 = ClassCProp2,
Prop3 = ClassCProp3,
}
};
}
}
}