我知道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