C# Сложная конструкция класса Read / Set Value из JSON - PullRequest
0 голосов
/ 15 января 2020

У меня проблема; У меня есть различные (слишком много) классы, которые связаны как Parent / Child

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

TopClass MyClass = new TopClass()
{
    Headers = new someHeaders()
    {
        CorrID = "1234567890",
        RequestID = "1234567890",
        L_Token = "abcdefghijklmnopqrstuvwxyz"
    },
    Body = new someBody()
    {
        access = new AccessHeaders()
        {
            allPs = "allAcc",
            availableAcc = "all"
        },
        CombinedServiceIndicator = false,
        FrequencyPerDay = 10,
        ValidUntil = "2020-12-31"
    },
    ResponseAttributes = new ConsentResponse()
    {
        myId = String.Empty,
        myStatus = String.Empty,
        myName = String.Empty,
        _links_self_href = String.Empty,
        status_href = String.Empty
    }
};

Инициалы значения, которые я заполняю выше, редко меняются, но свойства Классов меняются по мере продолжения проекта, и каждый класс имеет много свойств. Мне нужно проанализировать свойства и установить значения для любых свойств, которые соответствуют их имени, но я не могу понять, почему, несмотря на следующие официальные примеры. (Я читаю входные данные из строки JSON, которую я использую Newtonsoft - там все перепробовал)

Я не могу найти способ десериализации JSON и для назначения любого значения для моих свойств без с использованием имени свойства, т.е. без произнесения

MyClass.Body.access.allPs = "Hello"

, но что-то вроде

var json = response.Content.ReadAsStringAsync().Result.ToString();
var a = new { serverTime = "", data = new object[] { } };
var c = new JsonSerializer();

или

if (myresponse.Attributes.GetType().GetTypeInfo().GetDeclaredProperty(key) != null)
myresponse.GetType().GetTypeInfo().GetDeclaredProperty(key).SetValue(myresponse, entry.Value);
//and how do I read the value, parse my TopClass and assign the value to correct property?

Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 15 января 2020

Значения для свойств будут автоматически назначаться, если JSON имеет правильную структуру в соответствии с классом, упомянутым выше.

Что-то вроде:

{
    "Body": 
           "access:
              {
                 "allPs" = "required value"
              }
} 

Тогда вы можете использовать :

var result = JsonConvert.DeserializeObject < TopClass > (json );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...