comment retourner le format JSON D'ODATA?

je sais QU'ODATA peut renvoyer json mais je ne suis pas sûr si je dois utiliser un attribut ou une interface pour le faire.

je veux qu'il fasse comme http://odata.netflix.com/Catalog/Titles?$format=JSON, mais mon service odata n'a pas de retour JSON. Quand je l'appelle comme www.foo.com/service?$format=json, il renvoie XML.

Que dois-je faire pour retourner json avec ODATA?

26
demandé sur pankajkhatkar 2010-08-12 18:09:56

9 réponses

télécharger et installer Fiddler.

http://www.fiddler2.com/fiddler2/

Une fois installé, ouvrez-le, Cliquez sur l'onglet "Request Builder" situé sur le côté droit de Fiddler.

insérez cette URL:

http://test.com/feed2/ODataService.svc/results

notez que vous N'avez pas besoin de la ?$ format=JSON

dans la section" en-têtes de requête", insérer ce qui suit: ligne:

accept: application/json

Appuyez sur le grand bouton "Exécuter" en haut à droite de Fiddler.

Vous verrez les résultats de la requête ajouté à la liste sur le côté gauche de Violoneux.

double clic sur la requête. Le côté droit de Fiddler passera à L'onglet" inspecteurs " où vous pouvez voir les résultats de votre demande.

aussi, puisque vous travaillez avec Json, vous voulez probablement télécharger et installer le plugin JSON viewer pour Fiddler:

http://jsonviewer.codeplex.com/

23
répondu lamarant 2011-05-10 21:06:51

les nouvelles versions de WCF Data Services prennent en charge JSON par défaut et vous devez avoir

Accept: application/json;odata=verbose

dans l'entête de la requête.

Accept: application/json

n'est plus suffisante. Plus d'infos ici.

13
répondu Nate Cook 2013-05-10 19:40:22

personne Ne semble répondre à votre question très proprement ici!

à partir d'une page HTML, vous pouvez utiliser le code Javascript / JQuery suivant pour avoir un retour de données du Service de données de la FMC au format 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>
9
répondu Oli Gray 2012-01-06 14:12:40

vous devez ajouter "Accept: application / json" dans la section en-tête de requête.

découvrez ce lien

7
répondu Glaxalg 2010-08-12 22:11:04

si vous utilisez le fournisseur ODATA des services de données, vous pouvez facilement retourner ODATA comme JSON en le spécifiant dans L'URL comme dans l'échantillon que vous avez donné -http://odata.netflix.com/Catalog/Titles?$format=JSON

pour ce faire, utilisez le JSONP et le support de format contrôlé par URL pour ADO.NET services de données download from MSDN http://code.msdn.microsoft.com/DataServicesJSONP et ajouter le décorateur JSONPSupportBehavior à votre classe DataService comme dessous.

[JSONPSupportBehavior]
public class MyDataService : DataService<MyContextType>
{
     ...
4
répondu zackdever 2012-01-10 20:17:12

"...mais j'obtiens "the webpage cannot be found" en utilisant http://test.com/feed2/ODataService.svc/results?$format=JSON ..."

vous n'avez pas besoin du format $=JSON dans L'Uri.

il suffit D'utiliser"http://test.com/feed2/ODataService.svc/results"

(avec Accept: application/json dans l'en-tête de la requête)

2
répondu user4816271 2010-08-28 01:46:39

réponse tardive, mais j'ai passé la dernière heure à essayer de trouver comment boucler OData APIs et retourner le résultat en json. Le code suivant récupère le document json et l'écrit dans un fichier:

-o myfile.html -H "Accept: application/json" http://example.com/api/data?$filter=name eq 'whatever'
1
répondu 2013-05-02 22:18:15

ce n'est pas joli mais c'est comme ça que j'ai forcé la sortie JSON sans utiliser le format $dans la chaîne de requête:

    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();  
0
répondu Steven Veltema 2011-11-09 02:25:28

... juste utiliser des lettres minuscules:

"format=json"

0
répondu Radosław Kiela 2016-02-14 21:14:31