Я пытаюсь получить мой веб-сервис, написанный на .NET MVC5, для возврата JSON, который я могу использовать в приложении iOS. Я думал, что я уже успел, но более внимательно посмотрел на возвращенные данные - и имейте в виду, что это для меня все ново, так что простите мою терминологию - похоже, что я получаю JSON-массив, а не объект JSON ,Веб-сервис Возврат JSON Array не JSON Object
Это, я думаю, вызывает проблемы, когда я следую онлайн-учебным пособиям, в которых показано, как конвертировать объекты JSON в словари в Swift для отображения в приложении. Как вы можете видеть из выходного образца ниже, мой JSON начинается с [{"FirstName":"John"...
, эффективно запускать прямо в массив людей, когда я думаю, что я хочу, чтобы начать что-то вроде {"People":[{"FirstName":"John"...
Как я могу получить JSON вернулся, чтобы быть объект, а не просто массив людей? Я надеюсь, что я почти там и, возможно, просто нужно что-то изменить?
Модель:
public class PersonModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string DepartmentName { get; set; }
public IEnumerable<PhoneNumberModel> PhoneNumbers { get; set; }
}
Контроллер:
public class PersonController : ApiController
{
public IEnumerable<PersonModel> GetAllPersons()
{
List<PersonModel> person;
using (var context = new ContactsContext())
{
person = context.People.Include("PhoneNumbers.PhoneNumberType1").ToList()
.Select(p => new PersonModel
{
FirstName = p.FirstName,
LastName = p.LastName,
DepartmentName = p.Department1.Name,
PhoneNumbers = p.PhoneNumbers.Select(x => new PhoneNumberModel
{
PhoneNumberTypeName = x.PhoneNumberType1.Description,
TelephoneNumber = x.PhoneNumber1
})
}).ToList();
}
return person;
}
}
Выход:
[{
"FirstName": "John",
"LastName": "Smith",
"DepartmentName": "Accounts",
"PhoneNumbers": [{
"PhoneNumberTypeName": "Office",
"TelephoneNumber": "12345"
}, {
"PhoneNumberTypeName": "Mobile",
"TelephoneNumber": "54321"
}]
}, {
"FirstName": "Jane",
"LastName": "Harris",
"DepartmentName": "HR",
"PhoneNumbers": [{
"PhoneNumberTypeName": "Mobile",
"TelephoneNumber": "98765"
}]
}]
Сгенерированный JSON верен. Тип возврата для Action - это 'IEnumerable', который является коллекцией, поэтому он всегда будет преобразован в массив в JSON. –