J'ai une page ASP.NET avec une webmethod dessus pour réussir Json à mon JavaScript.
ci-dessous est la méthode Web: p> Lorsque cela est renvoyé au client, il est formaté comme suit: P> { \"d\": \"{ \"firstname\": \"John\", \"lastname\": \"Smith\" }\" }
3 Réponses :
Je suppose que vous souhaitez renvoyer la représentation JSON de l'objet mais votre signature de méthode renvoie une chaîne. La sérialisation ASP.NET Framework vous ne seriez pas surprise si la sortie était p> Il arrive tout simplement Cette réponse code> a des citations doubles qui doivent être échappées. P> Vous voulez évidemment simplement obtenir à l'objet. Vous avez 2 options: - p> 1) Utilisez 2) ou (et ceci est ma solution préférée) Demandez à votre méthode renvoient un objet réel et laissez la série JSON du cadre faire le levage lourd pour vous P> Vous verrez que cela génère la réponse que vous attendez probablement à l'origine (par exemple,
réponse code>. Mettre un autre moyen, si votre fonction était p>
eval code> dans votre JavaScript pour activer la chaîne en un objet par objet. p>
{"D": {"DernierName": "John", "Nom": "Smith"}} Code> P> P>
Ps. Si vous souhaitez conserver votre fonction renvoyer une chaîne contenant le JSON, je suggère d'utiliser quelque chose comme la fonction d'extension TOJSON de Risk Strahl [ west-wind.com/weblog/posts/442969.aspx] . Votre corps de méthode peut alors être nouveau {prénom = "John"}. Tojson ().
Merci pour votre réponse, c'est très intéressant. Je n'ai pas réalisé que vous pouviez créer des objets de cette façon en C #. Cependant, j'ai déjà créé un cadre pour la construction de chaînes JSON à partir d'objets afin d'utiliser l'option côté client. Je vais examiner l'option côté serveur dans les projets futurs. Merci.
@CHRisFewTrell - Merci beaucoup. Je retourne une chaîne pendant près de 2 ans maintenant. Ce post / réponse doit être évalué beaucoup plus élevé
En fait, toute cette question existe parce que vous essayez de sortir-penser des services Web ASP.NET. Vous devez configurer une classe pour que vos données soient renvoyées et utilisez cette classe (ou la liste (de votreclass)) pour les résultats de la queue et de les renvoyer. P>
Un excellent article expliquant tout cela (un piège très courant) est: http://encia.com/asp-net-web-services-mistake-manual-json-serialization/ p>
J'ai eu un problème similaire avec mon code. J'essayais de renvoyer un xmldocument comme JSON à un script d'appel, mais le retour de XMLDocument de Webservice a renvoyé un ensemble de tableaux vides (comme xmldocument n'est pas sérialisable!).
Si je réglais le scriptservice avec l'attribut ResponseFormat.json, mon JSON a été double-échappé. p>
Le chemin de l'Out-Fox ASP.NET est de dire ASP.NET que vous retournez XML et puis il ne double pas échapper à votre Json; -) p> Je sais que c'est un hack mais ..... p> p> P>