C# создание расширений из JSON с проверкой достоверности по модели связанных классов - PullRequest
1 голос
/ 02 февраля 2020

Ниже приведена довольно простая сборка классов, они представляют модель, любезно отметьте связанные классы (инициализация включена в соответствующие конструкторы каждого из них):

    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, одновременно проверяя правильность как иерархии, так и имени свойства .

Не могли бы вы помочь мне, пожалуйста, с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...