Rest Sharp Десериализует Частичный Объект - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь десериализовать часть запроса с помощью специального сериализатора с помощью RestSharp. Я создаю новый клиент отдыха и добавляю мой клиент Serializer

protected void SetJsonHandler(IRestClient client)
{
    var jsonHandlerType = "application/json";
    client.ClearHandlers();
    var jsonDeserializer = new JsonNetDeseralizer(JsonSettings);
    client.AddHandler(jsonHandlerType, jsonDeserializer);
}

У меня есть запрос на получение аккаунта, который выглядит так:

public List<Account> GetAccounts()
{
    var request = new RestRequest("accounts/", Method.GET, DataFormat.Json);
    var response = this._client.Execute<List<Account>>(request);

    this.HandleKnownExceptions(response);
    return response.Data;
}

У меня есть модели, которые соответствуют именам свойств

public class Balence
{
    public Double Amount { get; set; }
    public Currency Currency { get; set; }
}

public class Account
{
    public string Id { get; set; }
    public string Name { get; set; }
    public bool Primary { get; set; }
    public AccountType Type { get; set; }
    public Balence Balence { get; set; }
    public DateTime CreatedAt { get; set; }
}

но они не будут отображаться, потому что модели вложены в свойство данных:

{  
   "pagination":{  
     "ending_before":null,
      //...
   },
   "data":[  
    {  
       "id":"gje99c1e-7081-5784-9a1e-4p302b92312b",
       "name":"ETH Wallet",
       "primary":false,
       "type":"wallet",
       "balance":{  
          "amount":"0.97845347",
          "currency":"ETH"
       },
       "created_at":"2017-10-01T16:50:51Z",
       "resource":"account",
    }],
}

EDIT

десериализатор Json:

public class JsonNetDeseralizer : IDeserializer
{
    private readonly JsonSerializerSettings settings;

    public string RootElement { get; set; }
    public string Namespace { get; set; }
    public string DateFormat { get; set; }

    public JsonNetDeseralizer(JsonSerializerSettings settings)
    {
        this.settings = settings;
    }

    public T Deserialize<T>(IRestResponse response)
    {
        return JsonConvert.DeserializeObject<T>(response.Content, settings);
    }
}

Я бы предпочел не создавать фиктивную модель со свойством данных, чтобы иметь ее карту. Есть ли простой способ настроить Rest Sharp, Json.Net для сопоставления свойства данных с моделями в

...