2016-12-24 139 views
0

我已经开发了WebAPI移动应该返回JSON和它工作正常返回JSON但JSON在XML下。Webapi返回字符串XML中的JSON

下面是我的代码和截图。

return JsonConvert.SerializeObject(result); 

“result”是我填写数据的响应类。我尝试过使用Newsoft的JavaScriptSerializer和JsonConvert,但失败了。

Json returned in XML

我怎样才能得到它与J​​SON简单的字符串工作?

+0

尝试设置'Response.ContentType =“application/json”;'[MSDN参考资料](https://msdn.microsoft.com/en-us/library/ms525208%28v=vs.90%29.aspx? f = 255&MSPPError = -2147217396)和[application/json](http://www.iana.org/assignments/media-types/application/json)和[RFC 7159](https://tools.ietf.org/ html/rfc7159) –

+0

谢谢,但我需要那样做? –

+0

您需要在从服务器上的服务器发送任何数据之前执行此操作。看起来非常标准的是添加代码来接受新的获取标志来确定格式。如果未设置标志,则将其作为默认设置进行渲染。例如'https://example.com/api/foo?type = json' –

回答

1

由于您已将您的唯一方法返回类型转换为json,而不是将整个数据(响应数据)转换为Json格式。要将整个响应数据返回给Json,请在您的WebApiConfig.cs类中添加以下语法。

config.Formatters.Remove(config.Formatters.XmlFormatter); 

由于Web Api默认将所有响应数据发送到XML。所以你需要从WebApiConfig.cs类中删除默认XMLFormatter

为了更好地理解MediaTypeFormatters请看看这个视频教程。

https://www.youtube.com/watch?v=tNzgXjqqIjI&list=PL6n9fhu94yhW7yoUOGNOfHurUE6bpOO2b&index=6

UPDATE

不要序列化对象中的方法。删除JsonConvert.SerializeObject()并返回您的对象。只需在WebAppconfig.cs文件中添加上述语法即可。

+0

这不是答案。 OP从他们的方法返回**字符串**。如果OP添加了这个,他们的API将以JSON响应......但是JSON本身**将是一个字符串**。因此,而不是'{“foo”:“bar”}',响应将是'“{\”foo \“:\”bar \“}”'。 – CodeCaster

+0

他需要从返回类型中删除此JsonConvert.SerializeObject。 – Rajput

+0

嗨Rajput,谢谢你的答案 - 我已经应用了与我的评论相同的东西,但应用json格式使用HttpwebRequest。 –