RestSharp Объект списка JsonDeserializer - PullRequest
0 голосов
/ 19 ноября 2018

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

public class details
{
    public string id { get; set; }
    public string tran_id { get; set; }
    public string tran_type { get; set; }
    public string tran_status { get; set; }
    public string expiry_date_time { get; set; }
    public string number { get; set; }
}

Мой JSON, как показано ниже:

{
"details": [
    {
        "id": "ebca66079b44",
        "tran_id": "c9b1bce025f5",
        "tran_type": "A",
        "tran_status": "B",
        "expiry_date_time": "2018-11-26T06:33:04+00:00",
        "number": "12345678ABC"
    },
    {
        "id": "ebca66079b44",7c2445c8-a5ba-4ad2-a38e-3ea682c60edf",
        "tran_id": "3ea682c60edf",
        "tran_type": "A",
        "tran_status": "B",
        "expiry_date_time": "2018-11-26T06:26:28+00:00",
        "number": "22345678ABC"
    },
    {
        "id": "ebca66079b44",
        "tran_id": "e40c45817985",
        "tran_type": "A",
        "tran_status": "B",
        "expiry_date_time": "2018-11-26T06:26:06+00:00",
        "number": "32345678ABC"
    }
]
}

И мой код:

IRestResponse response = client.Execute(request);
//Deserialize Json
return new JsonDeserializer().Deserialize<List<details>>(response);

Я могу получить «детали», но не списоквнутри объекта.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Попробуйте Response.Data

вот мой пример кода

        public T Execute<T>(RestRequest request, HttpStatusCode expectedResponseCode) where T : new()
    {
        // Won't throw exception.
        var response = _client.Execute<T>(request);

        return response.Data;
    }


    public List<Project> GetProjects()
    {
        var request = new RestRequest()
        {
            Resource = ResourceUrls.Project(),
            RequestFormat = DataFormat.Json,
            Method = Method.GET
        };

        return Execute<List<Project>>(request, HttpStatusCode.OK);
    }
0 голосов
/ 19 ноября 2018

Вам нужно использовать объект, содержащий данные вашего массива JSON, потому что самый внешний слой - это объект, а не массив.

public class JsonModel
{
    public List<Detail> details { get; set; }
}


public class Detail
{
    public string id { get; set; }
    public string tran_id { get; set; }
    public string tran_type { get; set; }
    public string tran_status { get; set; }
    public string expiry_date_time { get; set; }
    public string number { get; set; }
}

используйте вот так.

new JsonDeserializer().Deserialize<JsonModel>(response);

Примечание

Данные json могут выдать ошибку из данных "ebca66079b44",7c2445c8-a5ba-4ad2-a38e-3ea682c60edf",.

Существует два способа легко создать модель.

  • Вы можете использовать Web Essentials в Visual Studio, использовать «Правка»> «Специальная вставка»> «Вставить JSON» в качестве класса, и вам будет проще узнать связь между Json и моделью.

  • Если вы не можете использовать Web Essentials, вы можете вместо этого использовать https://app.quicktype.io/?l=csharp онлайн JSON для класса Model.

Вы можете попробовать использовать эти модели для переноса вашего формата JSON.

...