Json字符串在web-api中被转义

时间:2014-03-27 13:36:43

标签: c# asp.net-web-api json.net asp.net-mvc-5

我们将JSON配置数据存储在数据库中。我需要获取这个JSON数据,然后通过asp.net web-api将其返回给浏览器:

public class ConfigurationController : ApiController
{
    public string Get(string configId)
    {
        // Get json from database
        // when i return the fetched json it get's escaped
    }
}

我返回的值会被转义。我怎么简单地返回字符串呢?我真的不想填充序列化为JSON的对象。

5 个答案:

答案 0 :(得分:17)

你可以从ApiController返回一个HttpResponseMessage,它允许你基本上返回一个字符串值。

e.g。

public HttpResponseMessage Get()
{
    return new HttpResponseMessage() { 
        Content = new StringContent("Hello World", System.Text.Encoding.UTF8, "application/json") 
    };
}

你想要做的只是将json字符串作为StringContent传递。

答案 1 :(得分:6)

接受的答案略有偏差。正确的版本是:

public HttpResponseMessage Get()
{
    return new HttpResponseMessage() { 
        Content = new StringContent("Hello World", System.Text.Encoding.UTF8, "application/json") 
    };
}

正确删除转义的StringContent函数。没有应用程序/ json媒体类型,像邮递员这样的工具不能正确地显示"漂亮的"结果的版本。

答案 2 :(得分:0)

这对我有用:

return Request.CreateResponse( HttpStatusCode.OK, stringContent );

答案 3 :(得分:0)

public HttpResponseMessage GetTravelers(string authkey)
{
var json = JsonConvert.SerializeObject(travelList, Global.JsonSettings);
 return new HttpResponseMessage()
 {
   Content = new StringContent(json, System.Text.Encoding.UTF8, 
"text/html")
       };

答案 4 :(得分:-1)

是的,它正在工作你必须将方法类型更改为HttpResponseMessage实例化的字符串或int类型

您必须将查询值序列化为Json