IHttpActionResult 返回带有括号和转义斜杠的结果,为什么会发生这种情况

问题描述 投票:0回答:2

虽然我可以使用 C# 来替换 [\ 和 ],但我不知道为什么它们会出现。

我从 C# 应用程序中调用 Web API 服务

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:11974/");  
    client.DefaultRequestHeaders.Accept.Clear();

    HttpResponseMessage response = await client.GetAsync("/GetNTIDWithEmail/"+ responseModel.ReferredToNTID + "/");

    if (response.IsSuccessStatusCode)
    {
        var x = await response.Content.ReadAsStringAsync();
    }

}

x = "[\"SPRUCEK\"]"

为什么它有括号和反斜杠?

我调用的 Web Api 看起来像这样

[Route("GetNTIDWithEmail/{id}")]
public IHttpActionResult GetNtidfromEmail(string id)
{
    var query = (from c in _db.rEmails
                    where c.Email.Contains(id)
                select c.ALIAS_NAME);


    return Ok(query);
}
c# asp.net-web-api asp.net-web-api2
2个回答
0
投票

我猜您正在调试器中查看它。 调试器正在转义引号,因此字符串实际上看起来像:

["SPRUCEK"]

这是有道理的。 您将返回一个

IEnumerable<string>
,它在 JSON 中将是一个数组。 您将返回一个结果,因此 JSON 看起来与您返回的内容相符。

从你的方法名称来看,我敢打赌你只想要一个结果。 如果是这种情况,请尝试:

 var result = (from c in _db.rEmails
                where c.Email.Contains(id)
            select c.ALIAS_NAME)
             .FirstOrDefault();

0
投票

抱歉,如果我的回复太晚了,但也许它可以帮助其他人。

将客户端应用程序中的 ReadAsStringAsync 函数更改为 ReadFromJsonAsync

var x = await response.Content.ReadFromJsonAsync<string>();

请记住,您收到的是 JSON,而不是字符串。 JSON 中的字符串用引号引起来。

© www.soinside.com 2019 - 2024. All rights reserved.