вот вы описали класс:
public class Tours
{
public List<TourInfo> tourInfos { get; set; }
}
вот вы создали экземпляр класса в методе роута:
Tours tours = new Tours();
заметьте, конструктор отработал, но поле tourInfos так и осталось не инициализированным
затем вы пытаетесь обратиться к не инициализированному полю объекта
tours.tourInfos[0].beachType = "one";// здесь возникает ошибка | И правильно, потому что tours.tourInfos - null
tours.tourInfos[1].beachType = "two";
и получаете вполне закономерную ругань платформы на "обращение по несуществующей ссылке".
Вам нужно инициализировать в конструкторе Tours, поле tourInfos (new List()).
Но на этом ваша история не закончится, т.к. на строчках
tours.tourInfos[0].beachType = "one";// здесь возникает ошибка
tours.tourInfos[1].beachType = "two";
система вам опять выбросит то же самое исключение, потому что у вас в коллекции tourInfos не существует ни одного экземпляра класса TourInfo, к которому вы пытаетесь обратится по индексу и изменить у него какое-то свойство. Сначала создайте эти объекты, затем добавьте их в лист, а уж потом доставайте их из листа по индексу и заполняйте необходимые свойства(ну или сначала создайте объекты, задайте им свойства, а потом добавляйте в лист).
По идеи должна вернутся строка с двумя JSON массивами, где все кроме beachType будет null.
нет, судя по вашему коду вам вернётся один JSON массив с двумя объектами в нём.