Ниже приведена довольно простая сборка классов, они представляют модель, любезно отметьте связанные классы (инициализация включена в соответствующие конструкторы каждого из них):
public class DataClass
{
public int num { get; set; }
public string code { get; set; }
public PartClass part { get; set; }
public MemberClass member { get; set; }
public DataClass()
{
part = new PartClass();
member = new MemberClass();
}
}
public class PartClass
{
public int seriesNum { get; set; }
public string seriesCode { get; set; }
}
public class MemberClass
{
public int versionNum { get; set; }
public SideClass side { get; set; }
public MemberClass()
{ side = new SideClass(); }
}
public class SideClass : IMPropertyAsStringSettable
{
public string firstDetail { get; set; }
public string secondDetail { get; set; }
public bool include { get; set; }
public SideClass()
{ }
}
Моя проблема довольно проста, однако сложность заключается в реализации: я создаю класс динамически, раскрываю и читаю JSON, который иногда эквивалентен один на один с иерархией DataClass, например:
{
"num": "3",
"code": "some sort of string",
"part": {
"seriesNum": "3",
"seriesCode": "sample"
},
"member": {
"versionNum": "1.5",
"side": {
"firstDetail": "aFirst",
"secondDetail": "aSecond",
"include": "true"
}
}
}
и иногда только несколько значений эквивалентны (будучи подмножеством DataClass не является ошибкой, если в JSON есть неизвестный тег, это ошибка - как, например, find "age": " 18 "в JSON, потому что DataClass нигде не содержит свойства 'age' и т. Д. c.), Например:
{
"num": "9",
"part": {
"seriesNum": "3",
},
"member": {
"versionNum": "1.5",
"side": {
"include": "true"
}
}
}
Как уже говорилось, мне все равно, если свойство - или целое дерево свойств - отсутствует в JSON по сравнению с DataClass.
Моя проблема в том, , как прочитать JSON и назначить свойства и значения в expando, одновременно проверяя правильность как иерархии, так и имени свойства .
Не могли бы вы помочь мне, пожалуйста, с этим?