2017-02-18 5 views
1

Мой метод контроллера API являетсяJSON ответ основан на параметре в WebAPI

public IQueryable<Team> GetTeam([FromUri] string include = "") 
{ 
    return from c in db.Team select new Team { id = c.TeamID, name = c.teamName, logo = "", social = new Map.Social { facebook = "", twitter = "" } }; 
} 

ответ из приведенного выше метода является

[{"id":1,"name":"example","logo":"","social":{"twitter":"","facebook":""}}] 

Вопрос заключается в том, что выше, ответ должен быть создан, если метод принимает "social" как параметр include.

Если параметр include является null ответ должен быть

[{"id":1,"name":"example","logo":""}] 

Как я должен изменить код, чтобы сделать это произошло?

Классы, используемые:

public class Team 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string logo { get; set; } 
    public Social social { get; set; } 
} 

public class Social 
{ 
    public string twitter { get; set; } 
    public string facebook { get; set; } 
} 
+0

Является ли это действительно то, что вы хотите? Я бы вернул ту же структуру - ответственность за обработку пустых коллекций или нулей - это ответственность потребителя. – mihail

ответ

1

формулировка вашего вопроса объясняет, что должно быть запрограммировано.

Упрощенный пример будет

public IQueryable<Team> GetTeam([FromUri] string include = "") { 

    //If the include parameter is null the response should be 
    if(String.IsNullOrWhiteSpace(include) { 
     return from c in db.Team select new Team { id = c.TeamID, name = c.teamName, logo = ""}; 
    } 

    return from c in db.Team select new Team { id = c.TeamID, name = c.teamName, logo = "", social = new Map.Social { facebook = "", twitter = "" } }; 
} 
+0

Спасибо. Это достаточно близко, но возвращает [{"id": 1, "name": "example", "logo": "", "social": null}] Мне бы хотелось объявить значение nullable класса :) – OrElse

+1

@ OrElse, обновить форматирование json при запуске, чтобы исключить свойства null. Это или вы также можете создать анонимный тип без этого свойства. оба варианта будут работать – Nkosi

+1

Вы рок! Этот сделал волшебство [JsonProperty (NullValueHandling = NullValueHandling.Ignore)] – OrElse

Смежные вопросы