Как вернуть объект Json из метода C #

Я пытаюсь исправить метод 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;
}

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, а НЕ в любом типе строк.


ОБНОВЛЕНИЕ

Перехватив переменную 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
13
задан Nicolás Alarcón Rapela 1 September 2019 в 08:01
поделиться