2013-09-08 21 views
12

ODataサービスのメタデータをJSON形式で取得することは可能ですか?

format=jsonを使用しようとすると機能しません。ここに私が試したものです:

http://odata.informea.org/services/odata.svc/$metadata/?format=json 

答えて

15

$metadata文書は現在、XML表現を持つCSDL形式です。 (あなたがformatクエリトークンはそれの前に$を持っていることを確認し、ODataのペイロードの異なる種類のJSONフォーマットを要求したいならば、サイドノートとして:。$format=json

ので、ノーそれはありません可能。ただし、$メタデータ文書のサブセットであるJSON、でサービス文書を取得することができます。

http://odata.informea.org/services/odata.svc?$format=json 

これは、型情報を持っていないだろうが、それはサービスの利用可能エントリポイントが一覧表示されます(つまり、 、エンティティセット)。

0

私は以前の答えに同意しました。これは仕様ではサポートされていませんが、一部のODataフレームワーク/ライブラリはこの機能を実装しようとしています。

オリンゴについて考える。これは、サーバー側も実装している場合に役立ちます。詳細についてはOlingo JIRAでこの問題を参照してください。

あなたはまた、?$format=jsonする代わりにティエリー・

0

、それはあなたを助けますことを願って次の2つのヘッダーを設定してください:

  • Accept: application/json
  • Content-Type: application/json; charset=utf-8

私は必要最低限​​のODataバージョンであるわからないんだけど、これはODATAのV4を使用してのMicrosoft Dynamics NAV 2016、上の私のために完璧に動作します。

1

jQueryを使用して、ODataサービス$ metadataから関連情報を取得できます。

例:
ODataエンティティのプロパティ名がアプリケーションエンティティと一致するかどうかをチェックするための単体テストを作成します。次に、ODataエンティティのプロパティを取得する必要があります。

$.ajax({ 
      type: "GET", 
      url: "/destinations/odata-service/$metadata", 
      beforeSend: function() { 
       console.log("before send check"); 
      }, 
      dataType: "xml", 
      contentType: "application/atom+xml", 
      context: document.body, 
      success: function(xml) { 
       console.log("Success ResourceTypes"); 
       var ODataTypeINeed = $(xml).find('EntityType').filter(function(){ 
             return $(this).attr('Name') == 'ODataTypeINeed' 
            });     
       $(ODataTypeINeed).find('Property').each(function() { 
        console.log($(this).attr('Name')); //List of OData Entity properties 
       }); 
      }, 
      error: function(err) { 
       console.log(err); 
      } 
}); 
関連する問題