我知道ODATA可以返回json,但不知道是否必须使用属性或接口来完成此操作。如何从ODATA返回json格式?
我希望它像http://odata.netflix.com/Catalog/Titles?$ format = JSON,但我的odata服务不返回JSON。当我将它称为www.foo.com/service?$format=json时,它只是返回XML。
我需要做什么才能使用ODATA返回json?
我知道ODATA可以返回json,但不知道是否必须使用属性或接口来完成此操作。如何从ODATA返回json格式?
我希望它像http://odata.netflix.com/Catalog/Titles?$ format = JSON,但我的odata服务不返回JSON。当我将它称为www.foo.com/service?$format=json时,它只是返回XML。
我需要做什么才能使用ODATA返回json?
您需要将“Accept:application/json”添加到请求标题部分。
这很有道理,我会在本周尝试一下,让你知道 谢谢 – wil 2010-08-14 22:14:30
恕我直言,这是正确的答案。但是请注意,一些OData Web服务仅支持Atom(xml)。 – BrainSlugs83 2012-05-24 22:51:19
“......但我得到 ”该网页无法找到“ 使用http://test.com/feed2/ODataService.svc/results?$格式= JSON ...”
你不需要在$格式= JSON在URI。
只要使用 “http://test.com/feed2/ODataService.svc/results”
(与接受:在请求头应用/ JSON)
下载并安装小提琴手。
http://www.fiddler2.com/fiddler2/
安装完成后,打开它,单击位于提琴手的右侧的“请求生成器”选项卡上。
插入此网址:
http://test.com/feed2/ODataService.svc/results
请注意,您不需要$格式= JSON
在 “请求头” 部分,插入以下行:
accept: application/json
击中Fiddler右上方的Big“Execute”按钮。
您会看到请求的结果添加到Fiddler左侧的列表中。
双击请求。 Fiddler的右侧将更改为“Inspectors”选项卡,您可以在其中查看请求的结果。
而且,因为你是使用JSON的工作,你可能要下载并安装小提琴手json的浏览器插件:
Fiddler说<?xml version =“1.0”encoding =“utf-8”standalone =“yes”?>
我用Postman,但我需要知道的是请求头'accept:application/json'谢谢! – 2016-06-09 19:15:11
它不漂亮,但我这是怎么强迫JSON输出不使用$格式请求字符串:
Request r = new Request(Method.GET, "http://XXXXXXX.svc//Login"
+ "&UserId=" + "'" + "user" + "'"
+ "&Password=" + "'" + "password" + "'");
ClientInfo ci = r.getClientInfo();
ArrayList<Preference<MediaType>> accepted = new ArrayList<Preference<MediaType>>();
accepted.add(new Preference<MediaType>(MediaType.APPLICATION_JSON));
ci.setAcceptedMediaTypes(accepted);
Client client = new Client(Protocol.HTTP);
Response response = client.handle(r);
Representation output = response.getEntity();
没有人似乎在这里很干净地回答你的问题!
在HTML页面中,您可以使用以下Javascript/JQuery代码让WCF数据服务以JSON格式返回数据;
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var sURL = "http://YourService.svc/Books(10)";
function testJSONfetch() {
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: sURL,
error: bad,
success: good,
beforeSend: function (XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
}
});
}
function good(response)
{
}
function bad(response)
{
}
</script>
如果您使用数据服务的ODATA提供商,你可以很容易地通过在URL中指定它作为你给的样品中返回ODATA为JSON - http://odata.netflix.com/Catalog/Titles $格式= JSON
要做到它使用JSONp和URL控制的格式支持从MSDN http://code.msdn.microsoft.com/DataServicesJSONP下载ADO.NET Data Services,并将JSONPSupportBehavior装饰器添加到您的DataService类中,如下所示。
[JSONPSupportBehavior]
public class MyDataService : DataService<MyContextType>
{
...
最后回答,但我一直在花费最后一小时试图找出如何卷曲OData APIs并将结果作为json返回。默认情况下
-o myfile.html -H "Accept: application/json" http://example.com/api/data?$filter=name eq 'whatever'
WCF数据服务支持JSON的较新版本,你必须有
Accept: application/json;odata=verbose
在请求头
:下面的代码读取文件中的JSON,并将其写入文件。
Accept: application/json
不再足够。更多信息here。
...只使用小写字母:
“格式= json的”
这是一个黑客,但如果你想用默认App_Start下返回JSON,在你的ODataConfig(或WebApiConfig),你可以将这行代码添加到'Register'方法的底部:'config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue(“text/html”));'。 – BrainSlugs83 2015-06-20 00:23:26
idk,但我必须写'json'全部小写,然后它的作品。也许CaSeSeNsItIvE? – inetphantom 2016-01-04 14:03:36
同样的结果在这里,我只需要写小写的'json'。或者,将请求标头设置为'Accept:application/json'也可以工作 – 2016-06-09 19:20:06