2013-11-12 3 views
0

Я использую swagger ui plugin для документирования своего веб-api. Я хочу вернуть объект JSON, например:Swagger UI + MVC 4 Web API Получить JSON с именем объекта

{"Person": { 
     "Id": 1, 
     "Name": "John", 
     "address": { 
       "Street": "ABC", 
       "City": "Penrith", 
       "PostCode": 2034, 
       "State": "NSW" 
      }, 
     "DOB": "2013-11-11T00:00:00" 
} 
} 

Обратите внимание на название объекта Person.

я могу сделать это с помощью следующего кода:

public HttpResponseMessage Get(int id) 
    { 

     Person person = new Person { Id = 1, Name = "John", DOB = new DateTime(2013, 11, 11), address = new Address { City = "Penrith", State = "NSW", PostCode = 2034, Street = "ABC" } } ; 

     return Request.CreateResponse(HttpStatusCode.Accepted, new { Person = person }); 
    } 

К сожалению, из-за возвращаемый тип HttpResponseMessage и не сам человек, Форс просто показывает модель как HttResponseMessage. Я этого не хочу.

Если я изменил тип возврата на Лицо и вернул объект person, я не получаю имя объекта Person в возврате JSON. Это возвращает только -

{ 
    "Id": 1, 
    "Name": "John", 
    "address": { 
      "Street": "ABC", 
      "City": "Penrith", 
      "PostCode": 2034, 
      "State": "NSW" 
     }, 
    "DOB": "2013-11-11T00:00:00" 

}

Есть ли способ вернуть человека, но есть строка JSON с именем объекта Person?

+0

Где вы хотите получить имя Person? JSON - это просто значение, которое может быть назначено на все, что вы хотите, когда получите его на стороне клиента. – JotaBe

+0

Посмотрите на SwaggerUI и как ему нужна «модель». – Mukus

+0

У любого есть время, чтобы помочь вам, но облегчите им задачу. У меня нет времени смотреть на SwaggerUI. И, возможно, многие другие люди. – JotaBe

ответ

1

Просто создайте новый класс, который имеет свойство Person, экземпляр его, присваивает значение свойству Person и возвращает этот объект.

Таким образом, JSON будет выглядеть так, как ожидалось.

Если вы не хотите, чтобы создать новый класс, попробуйте использовать анонимный тип, например:

// If you have this object 
var MyPerson = ...; 
// Return this from Web API 
return new { Person = MyPersons }; 

(я не знаю, если этот последний вариант будет работать для вас)

+0

Хорошо, я попробую. Вы поняли мой вопрос :) +1 – Mukus