Как извлечь желаемый объект Json List вместе с оставшимися Json свойствами в класс модели? - PullRequest
0 голосов
/ 06 августа 2020

// Вот Json, с которым я сейчас работаю ..

{
    "groups": null,
    "data": [{
            "type": 123,
            "name": "Name123"
        },
        {
            "type": 567,
            "name": "SecondName"

        }
    ],
    "total": 2

}

// вот класс модели, в котором я хочу десериализовать "данные" последнего объекта, включая "группу" и также всего

public class JsonModel
{
   public class Data
  {
   public int type { get; set; }
   public string name { get; set; }
  }
 
   public object groups { get; set; }
   public Date[] data { get; set; }
   public int total { get; set; }
}
                   //FYI using RestSharp to perform the request 
                 response = HttpGet("Url")
                   parsedResponse =   JToken.Parse(response.content);
        JsonModel.Date expectedData = JsonConvert.DeserializeObject<JsonModel.Date> 
          (parsedResponse["data"].Last.ToString());


//After deserialzing I only get the type and name.. how to also get the groups and total here in my JsonModel to correctly map it.. I understand I am deserializing to JsonModel.Date thats why.. but how can I include the total and groups property..

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Вам нужно будет либо продолжить синтаксический анализ по свойствам, либо создать новый экземпляр JsonModel вручную:

var result = new JsonModel
{
    data = new [] {parsedResponse["data"].Last.ToObject<JsonModel.Date>()},
    groups = parsedResponse["groups"].ToObject<object>(),
    total = parsedResponse["total"].Value<int>()
};

Или вы можете десериализовать его и переназначить свойство data:

var result = JsonConvert.DeserializeObject<JsonModel>(response.content);
result.data = new[] {result.data.Last()};
0 голосов
/ 06 августа 2020

Я использовал онлайн-инструмент, чтобы преобразовать ваш json. Результаты приведены ниже:

// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 
    public class Datum    {
        public int type { get; set; } 
        public string name { get; set; } 
    }

    public class Root    {
        public object groups { get; set; } 
        public List<Datum> data { get; set; } 
        public int total { get; set; } 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...