Передать объектный массив в тело запроса - PullRequest
0 голосов
/ 28 августа 2018

У меня есть объект, определенный следующим образом.

public class ILT
{
    public items items;
    public options options;
}

public class items
{
    public string course_code { get; set; }
    public string session_code { get; set; }
    public string date_name { get; set; }
    public string date { get; set; }
    public string time_start { get; set; }
    public string time_end { get; set; }
    public string location_name { get; set; }
    public string location_address { get; set; }
    public string location_country { get; set; }

    public items() { }

    public items(string course_code, string session_code, string date_name, 
    string date, string time_start, string time_end, string location_name, 
    string location_address, string location_country)
        {
            this.course_code = course_code;
            this.session_code = session_code;
            this.date_name = date_name;
            this.date = date;
            this.time_start = time_start;
            this.time_end = time_end;
            this.location_name = location_name;
            this.location_address = location_address;
            this.location_country = location_country;
        }
    }

Я пытаюсь передать объект в тело запроса RestfulAPI. Атрибут items должен быть массивом объектов.

JSon должен быть отформатирован следующим образом:

{
  "items": [
    {
      "course_id": 6,
      "session_code": "my session code",
      "session_name": "my session name",
      "session_maximum_enrollments": 20,
      "session_last_subscription_date": "2018-10-27",
      "completion_type": "Evaluation",
      "score_base": 100,
      "date_name": "my date name",
      "date": "2018-10-28",
      "timezone": "America/New_York",
      "time_start": "08:00:00",
      "time_end": "12:00:00",
      "location_name": "my location name",
      "location_address": "10850 W. Park Place Suite 600, Milwaukee, WI 53225",
      "location_country": "UNITED STATES OF AMERICA"
    }
  ],
  "options": {
    "update_session_info": true
  }
}

У меня проблемы с получением элементов в массив. Я пытаюсь инициализировать объект в теле запроса следующим образом:

public bool CreateILT()
        {
            if (String.IsNullOrEmpty(Token))
                Token = request.GetToken();

            ILT classroom = new ILT
            {
                items = new items[0]
                (   
                    course_code = "APS_CLASSROOM",
                    session_code = "APS_CLASSROOM",
                    date_name = "August 27, 2018",
                    date = "2018-10-27",
                    time_start = "08:00:00",
                    time_end = "17:00:00",
                    location_name = "Crisis Prevention Institute",
                    location_address = "10850 W. Park Place Suite 600, Milwaukee, WI 53225",
                    location_country = "UNITED STATES OF AMERICA"
                ),
                options = new options
                {
                    update_session_info = true
                }

            };

            dynamic response = request.Request_POST("/learn/v1/ilt/session/batch", Token, classroom);
            if (response.data.success.ToString() == "True")
                success = true;

            return success;
        }

Могу ли я инициализировать массив объектов следующим образом? Я получаю ошибки различных типов при настройке. Приведенный выше код ошибки при каждом участнике объекта говорит, что он не существует в текущем контексте.

1 Ответ

0 голосов
/ 28 августа 2018

Ваше объявление переменной класса неверно. Он хранит объект, а не массив / список объектов. И я не мог видеть ваш options класс. Вы правильно поняли?

Это должно быть объявлено следующим образом:

public class ILT
{
    public List<items> items;
    public options options;
}

И вы должны инициализировать его следующим образом:

ILT classroom = new ILT
{
    items = new List<items> {
        new item(   
            course_code = "APS_CLASSROOM",
            session_code = "APS_CLASSROOM",
            date_name = "August 27, 2018",
            date = "2018-10-27",
            time_start = "08:00:00",
            time_end = "17:00:00",
            location_name = "Crisis Prevention Institute",
            location_address = "10850 W. Park Place Suite 600, Milwaukee, WI 53225",
            location_country = "UNITED STATES OF AMERICA")
    },
    options = new options
    {
        update_session_info = true
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...