Comment puis-je retourner JSON à partir d'une Fonction d'Azur
Je suis à jouer avec Azure Fonctions. Cependant, je me sens comme je suis perplexe sur quelque chose d'assez simple. Je suis à essayer de comprendre comment revenir de base JSON. Je ne suis pas sûr de la façon de créer un peu de JSON et le faire revenir à ma demande.
Une fois, je voudrais créer un objet, remplir ses propriétés, et sérialiser. Donc, j'ai commencé en bas de ce chemin d'accès:
#r "Newtonsoft.Json"
using System.Net;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info($"Running Function");
try {
log.Info($"Function ran");
var myJSON = GetJson();
//I want myJSON to look like:
//{
// firstName:'John',
// lastName: 'Doe',
// orders: [
// { id:1, description:'...' },
// ...
// ]
//}
return ?;
} catch (Exception ex) {
//TODO: Return/log exception
return null;
}
}
public static ? GetJson()
{
var person = new Person();
person.FirstName = "John";
person.LastName = "Doe";
person.Orders = new List<Order>();
person.Orders.Add(new Order() { Id=1, Description="..." });
?
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Order> Orders { get; set; }
}
public class Order
{
public int Id { get; set; }
public string Description { get; set; }
}
Cependant, je suis totalement coincé sur la sérialisation et le processus de retour maintenant.Je suppose que je suis de retour JSON ASP.NET MVC où tout est une Action
- Vous avez quelques réponses - veuillez cocher une réponse à votre question. J'ai fourni une date de réponse basé sur la documentation récente.
Vous devez vous connecter pour publier un commentaire.
Voici un exemple complet d'Azur fonction retournant un correctement formaté objet JSON au lieu de XML:
Naviguer vers le point de terminaison dans un navigateur et vous verrez:
Vous pouvez prendre
req
deet de créer de la réponse à l'aide de
ou l'un des autres surcharges en assemblée
System.Web.Http
.Plus d'infos sur docs.microsoft.com
req.CreateResponse(HttpStatusCode.OK, json, JsonMediaTypeFormatter.DefaultMediaType);
. Je pense que c'est plus sûr qu'unapplication/json
chaîne.JSON est assez facile, Newtonsoft.Librairie Json est un cas particulier. Vous pouvez l'inclure en ajoutant ceci au début du fichier de script:
Alors votre fonction devient:
Run
méthode? LeRun
méthode retourne unHttpResponseMessage
qui n'est pas une chaîne. Pourtant, je ne veux pas retourner une chaîne brute. Plutôt je veux le retour JSON.Il ressemble à ce qui peut être atteint seulement par l'aide de la "application/json" type de support, sans devoir explicitement de sérialiser
Person
avecNewtonsoft.Json
.Ici, c'est la pleine échantillon de travail que les résultats de google Chrome, comme:
Le code est donné ci-dessous:
JsonMediaTypeFormatter.DefaultMediaType
paramètre, vous aurez donc:var response = req.CreateResponse(HttpStatusCode.OK, myJSON);
Vous pouvez modifier la méthode de signature dans:
et il permettra de données JSON à être retourné.
return req.CreateResponse(HttpStatusCode.OK, result, "application/json");
, sans jouer avec la signature de la méthodeJ'ai eu un problème semblable et ce qui semblait être le plus populaire post sans réponse. Après, s'imaginant ce nœud ne le ci-dessous doivent travailler et de vous donner exactement ce que vous êtes après. Les autres exemples encore renvoie une représentation sous forme de chaîne de wheres ce sera de retour JSON.
N'oubliez pas de déclarer à l'aide du Système.Texte; et aussi d'ajouter:
à la GetJson fonction comme par Juunas réponse.
HTML:
Le plus simple est peut-être à
Va définir le type de contenu pour
application/json
et retour le json dans le corps de la réponse.