2016-01-28 4 views
1

Здесь я хочу, чтобы в качестве ответа был выбран «Пользователь». Но он также содержит сообщение. Я хочу, чтобы сообщение печаталось только один раз. В настоящее время он печатает user.count раз.Как отформатировать список в HttpResponseMessage в WEB API

for (int i = 0; i < user.Count; i++) 
{ 
    if (user[i].Message == "Success") 
     { 
     resp = new HttpResponseMessage { Content = new ObjectContent(typeof(List<GetUserList>), user, GlobalConfiguration.Configuration.Formatters.JsonFormatter) }; 
     } 
    else 
     { 
     resp = new HttpResponseMessage { Content = new StringContent("[{\"Message\":\"" + user[i].Message + "\"}]", System.Text.Encoding.UTF8, "application/json") }; 
     } 
} 

Результат должен быть таким:

{ 
    "message": " Successful", 
    "supervisorlist": [ 
    { 
    " userID ": "654", 
    " forename ": "John" 
    }, 
    { 
    " userID ": "655", 
    " forename ": "Jack" 
    } 
] 

} 

ответ

1

пример успеха

var responseObj = new { message = "Successful", supervisorlist = users }; 

resp = new HttpResponseMessage 
     { 
      Content = new StringContent(JsonConvert.SerializeObject(responseObj), 
              System.Text.Encoding.UTF8, "application/json") 
     }; 
+0

Cleanest найденное решение на стеке –

0
bool includeMessage = users.Any(u => u.Message == "Success"); 
object content = null; 

if(includeMessage) { 
    content = new { message = "Success", supervisorlist = users }; 
} else { 
    content = new { supervisorlist = users }; 
} 

resp = new HttpResponseMessage { 
      Content = new StringContent(JsonConvert.SerializeObject(content), System.Text.Encoding.UTF8, "application/json") 
     }; 
Смежные вопросы