Member 14796219 Ответов: 1

Ошибка Restsharp :предоставление null из результата.data


I'm trying to fetch the data from rest api but getting null from the result.data

        request4.AddHeader("Content-Type", "application/json");
        request4.AddHeader("Authorization", "Bearer " + mytoken);
        request4.AddParameter("application/json", "{ \"active\": true }", ParameterType.RequestBody);


        var result = client4.Execute<List<RootObject>>(request4);//getting nullexcception here

        //Console.WriteLine(result);
        //Console.ReadKey();

        foreach (var i in result.Data)

        {
            foreach (var j in i.sales_offices)
            {
                Console.WriteLine(j.state);
            }
}

        }


    public class SalesOffice
    {
        public bool active { get; set; }
        public string _id { get; set; }
        public string name { get; set; }
        public string state { get; set; }
    }


public class RootObject
      {
          public bool success { get; set; }
          public string message { get; set; }
          public List<SalesOffice> sales_offices { get; set; }

      }
and from json I'm getting this result

{ "success": true, "message": "Gtm Cities loaded successfully!", "sales_offices": [ { "active": true, "_id": "XXXXX5cb57542ed50d82730d7661d", "name": "UAXXS", "state": "AXXX.P" }

Please help me as it is showing no issue in the code


Что я уже пробовал:

<pre>I'm trying to fetch the data from rest api but getting null from the result.data

        request4.AddHeader("Content-Type", "application/json");
        request4.AddHeader("Authorization", "Bearer " + mytoken);
        request4.AddParameter("application/json", "{ \"active\": true }", ParameterType.RequestBody);


        var result = client4.Execute<List<RootObject>>(request4);//getting nullexcception here

        //Console.WriteLine(result);
        //Console.ReadKey();

        foreach (var i in result.Data)

        {
            foreach (var j in i.sales_offices)
            {
                Console.WriteLine(j.state);
            }
}

        }


    public class SalesOffice
    {
        public bool active { get; set; }
        public string _id { get; set; }
        public string name { get; set; }
        public string state { get; set; }
    }


public class RootObject
      {
          public bool success { get; set; }
          public string message { get; set; }
          public List<SalesOffice> sales_offices { get; set; }

      }
and from json I'm getting this result

{ "success": true, "message": "Gtm Cities loaded successfully!", "sales_offices": [ { "active": true, "_id": "XXXXX5cb57542ed50d82730d7661d", "name": "UAXXS", "state": "AXXX.P" }

Please help me as it is showing no issue in the code

Richard MacCutchan

Используйте свой отладчик, чтобы увидеть, какая ссылка вызывает исключение.

1 Ответов

Рейтинг:
1

Garth J Lancaster

Этот

var result = client4.Execute<List<RootObject>>(request4);


выглядит неверно - вы не возвращаете список RootObjects, вы (надеюсь) возвращаете иерархию RootObject, которая содержит в себе список SalesOffice(s)

Ваши данные показывают, что, по крайней мере, вы получаете SalesOffice, я не уверен/не ясно, является ли это просто фрагмент данных, которые вы показали, или весь возврат - если результат заполняется правильно, то я ожидаю получить доступ к первому sales_office чем-то вроде:

SalesOffice soFirst = result.sales_offices.first();


кстати, "RootObject", как вы определили, не имеет поля/элемента "Data", так что это не сработает - я подозреваю, что вы имели в виду что-то вроде

foreach (var j in result.sales_offices)
{
    Console.WriteLine(j.state);
}



Я должен признаться, что ненавижу использование 'var j' там, так как вы знаете, что это тип ie 'SalesOffice' .. чрезмерное использование var затрудняет чтение кода