我们将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的对象。
答案 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