我知道ODATA可以返回json但不确定我是否必须使用属性或接口来执行此操作。
我希望它像http://odata.netflix.com/Catalog/Titles一样?$ format = JSON但我的odata服务不返回JSON。当我把它称为www.foo.com/service?$format=json时,它只返回XML。
使用ODATA返回json需要做什么?
答案 0 :(得分:23)
下载并安装Fiddler。
http://www.fiddler2.com/fiddler2/
安装完成后,打开它,点击Fiddler右侧的“Request Builder”标签。
插入此网址:
http://test.com/feed2/ODataService.svc/results
请注意,您不需要?$ format = JSON
在“请求标头”部分中,插入以下行:
accept: application/json
点击Fiddler右上角的Big“Execute”按钮。
您会看到请求的结果已添加到Fiddler左侧的列表中。
双击请求。 Fiddler的右侧将更改为“Inspectors”选项卡,您可以在其中查看请求的结果。
此外,既然你正在使用Json,你可能想下载并安装Fiddler的Json viewer插件:
答案 1 :(得分:13)
默认情况下,较新版本的WCF数据服务支持JSON,您必须具有
Accept: application/json;odata=verbose
请求标题中的。
Accept: application/json
已经不够了。更多信息here。
答案 2 :(得分:9)
似乎没有人在这里非常干净地回答你的问题!
在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>
答案 3 :(得分:7)
您需要在请求标题部分添加“Accept:application / json”。
答案 4 :(得分:4)
如果您正在使用Data Services中的ODATA提供程序,您可以轻松地将ODATA作为JSON返回,方法是在URL中指定它,如您提供的样本中所示 - http://odata.netflix.com/Catalog/Titles?$ format = JSON
为此,请使用从MSDN http://code.msdn.microsoft.com/DataServicesJSONP下载的ADO.NET数据服务的JSONp和URL控制格式支持,并将JSONPSupportBehavior装饰器添加到您的DataService类中,如下所示。
[JSONPSupportBehavior]
public class MyDataService : DataService<MyContextType>
{
...
答案 5 :(得分:2)
“......但我得到”使用http://test.com/feed2/ODataService.svc/results无法找到网页?$ format = JSON ...“
你不需要在Uri中使用$ format = JSON。
只需使用“http://test.com/feed2/ODataService.svc/results”
即可(在请求标头中使用Accept:application / json)
答案 6 :(得分:1)
迟到的答案,但我一直在花费最后一小时试图弄清楚如何卷曲OData API并将结果作为json返回。以下代码在json中获取文档并将其写入文件:
-o myfile.html -H "Accept: application/json" http://example.com/api/data?$filter=name eq 'whatever'
答案 7 :(得分:0)
它不漂亮,但这是我在请求字符串中不使用$ format强制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();
答案 8 :(得分:0)
...只使用小写字母:
“格式= JSON”