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?
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:
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>
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>
{
...
"...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)
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'
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();
... juste utiliser des lettres minuscules:
"format=json"