Я пытаюсь исправить метод ASP.NET WebAPI, где требуется ответ Json. Однако вместо этого он возвращает строку.
Первоначально это был формат XML, но я добавил эту строку в код mvc в App_Start\WebApiConfig.cs, чтобы вернуть Json по умолчанию.
config.Formatters.Remove(config.Formatters.XmlFormatter);
Мы обновили метод c # следующим образом, чтобы использовать NewtonSoft:
public string Get()
{
string userid = UrlUtil.getParam(this, "userid", "");
string pwd = UrlUtil.getParam(this, "pwd", "");
string resp = DynAggrClientAPI.openSession(userid, pwd);
JsonSerializer ser = new JsonSerializer();
string jsonresp = JsonConvert.SerializeObject(resp);
return resp;
}
Соотв. var возвращается как строковый тип:
"{status:\"SUCCESS\",data:[\"4eb97d2c6729df98206cf214874ac1757649839fe4e24c51d21d\"]}"
и jsonresp var выглядит так:
"\"{status:\\\"SUCCESS\\\",data:[\\\"4eb97d2c6729df98206cf214874ac1757649839fe4e24c51d21d\\\"]}\""
и в инструментах разработчика Chrome F12 объект данных:
""{status:\"SUCCESS\",data:[\"4eb97d2c6729df98206cf214874ac1757649839fe4e24c51d21d\"]}""
и в Консольных инструментах результат angular.fromJson(data):
"{status:"SUCCESS",data:["4eb97d2c6729df98206cf214874ac1757649839fe4e24c51d21d"]}"
Я хотел бы получить несколько советов о том, как правильно возвращать объект Json, а НЕ в любом типе строки.
UPDATE
Перехватив переменную resp
и воспользовавшись приведенным ниже предложением г-на Чу, я могу успешно получить хороший чистый объект Json на клиенте.
Ключ в том, что resp
должен содержать двойные кавычки вокруг обеих пар ключ: значение:
public HttpResponseMessage Get()
{
string userid = UrlUtil.getParam(this, "userid", "");
string pwd = UrlUtil.getParam(this, "pwd", "");
string resp = DynAggrClientAPI.openSession(userid, pwd);
resp = "{\"status\":\"SUCCESS\",\"data\":[\"194f66366a6dee8738428bf1d730691a9babb77920ec9dfa06cf\"]}"; // TEST !!!!!
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(resp, System.Text.Encoding.UTF8, "application/json");
return response;
}
в консоли Chrome ответ:
Object {status: "SUCCESS", data: Array[1]}
data: Array[1]
status: "SUCCESS"
__proto__: Object