【问题标题】:IHttpActionResult returns result with brackets and escape slash , why is this happeningIHttpActionResult 返回带有括号和转义斜杠的结果,为什么会这样
【发布时间】:2015-11-03 21:54:12
【问题描述】:

虽然我可以使用 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


    【解决方案1】:

    我猜你正在调试器中查看它。调试器正在转义引号,所以字符串看起来像:

    ["SPRUCEK"]
    

    这是有道理的。您将返回一个 IEnumerable<string>,它在 JSON 中将是一个数组。您将返回一个结果,因此 JSON 会准确地查找您返回的内容。

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

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

    【讨论】:

    • 好的,所以添加 FirstOrDefault 确实摆脱了括号,但是无论我将鼠标悬停在变量“x”上还是在 vs 立即窗口中查看输出,它都显示“\”SPRUCEK\” " 我想获取变量值并分配给字符串属性并保存到数据库表中,所以这不会有问题吗?
    • 有时我确实想要 JSON ,因为我使用 jquery ajax 对 web api 进行了很多调用,但我认为在这种情况下我只想拥有我的 c# web 应用程序。在 c# 方法中只需调用 c# 中的其他 Web api 服务,而不是使用 javascript 从客户端调用。
    • 那么问题是它会将双引号插入并存储到数据库表 "SPRUCEK" 中,那么我该如何防止呢?
    猜你喜欢
    • 2023-04-10
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多