ASP.NET JSON de Réponse du Service Web format
J'ai écrit un service web simple qui se produit liste dans JSONText qui est l'objet de corde
Service Web code est ci-dessous
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
using System.Runtime.Serialization.Json;
using System.IO;
using System.Text;
///<summary>
///Summary description for JsonWebService
///</summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class JsonWebService : System.Web.Services.WebService
{
public JsonWebService () {
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetProductsJson(string prefix)
{
List<Product> products = new List<Product>();
if (prefix.Trim().Equals(string.Empty, StringComparison.OrdinalIgnoreCase))
{
products = ProductFacade.GetAllProducts();
}
else
{
products = ProductFacade.GetProducts(prefix);
}
//yourobject is your actula object (may be collection) you want to serialize to json
DataContractJsonSerializer serializer = new DataContractJsonSerializer(products.GetType());
//create a memory stream
MemoryStream ms = new MemoryStream();
//serialize the object to memory stream
serializer.WriteObject(ms, products);
//convert the serizlized object to string
string jsonString = Encoding.Default.GetString(ms.ToArray());
//close the memory stream
ms.Close();
return jsonString;
}
}
maintenant il me donner resoponse comme ci-dessous :
{"d":"[{\"ProductID\":1,\"Nom\":\"1\"},{\"ProductID\":2,\"Nom\":\"Produit 2\"},{\"ProductID\":3,\"Nom\":\"Produit 3\"},{\"ProductID\":4,\"Nom\":\"4\"},{\"ProductID\":5,\"Nom\":\"Produit 5\"},{\"ProductID\":6,\"Nom\":\"Produit 6\"},{\"ProductID\":7,\"Nom\":\"Produit 7\"},{\"ProductID\":8,\"Nom\":\"Produit 8\"},{\"ProductID\":9,\"Nom\":\"Produit 9\"},{\"ProductID\":10,\"Nom\":\"Produit 10\"}]"}
Mais je suis à la recherche de ci-dessous mettre à
[{"ProductID":1,"Nom":"1"},{"ProductID":2,"Nom":"Produit 2"},{"ProductID":3,"Nom":"Produit 3"},{"ProductID":4,"Nom":"4"},{"ProductID":5,"Nom":"Produit 5"},{"ProductID":6,"ProductName":Produit "6"},{"ProductID":7,"Nom":"Produit 7"},{"ProductID":8,"Nom":"Produit 8"},{"ProductID":9,"Nom":"Produit 9"},{"ProductID":10,"Nom":"Produit 10"}]
quelqu'un peut-il me dire ce qui est réel problème
Grâce
OriginalL'auteur Hiscal | 2009-08-06
Vous devez vous connecter pour publier un commentaire.
Premièrement, il y a un changement avec ASP.NET 3.5 pour des raisons de sécurité, Microsoft a ajouté le "d" de la réponse. Ci-dessous un lien à partir de Dave Ward à la Encosia qui parle de ce que vous voyez:
Une modification de rupture entre les versions de ASP.NET AJAX. Il a plusieurs posts qui parle de ce qui peut vous aider avec le traitement de JSON et ASP.NET
Je suis désolé, je suppose que je ne comprends pas votre commentaire. Voulez-vous aller à ASP.NET 2.0? Parce que fondée sur la réponse JSON que vous recevez que vous utilisez ASP.NET 3.5 en raison du "d" qui est ajoutée. Ou êtes-vous demandé comment travailler avec le "d" dans la réponse que vous recevez.
J'ai de travailler avec votre suggestion, mais encore il me donner même hors mis avec les " \ " et de ne pas me donner de sortie comme {"d":"[{"ProductID":1,"Nom":"1"},{"ProductID":2,"Nom":"Produit 2"},{"ProductID":3,"Nom":"Produit 3"},{"ProductID":4,"Nom":"4"},{"ProductID":5,"Nom":"Produit 5"},{"ProductID":6,"Nom":"Produit 6"},{"ProductID":7,"Nom":"Produit 7"},{"ProductID":8,"Nom":"Produit 8"},{"ProductID":9,"Nom":"Produit 9"},{"ProductID":10,"ProductName":Produit "10"}]"}
C'est parce que vous êtes de retour d'une chaîne unique il est donc échapper les guillemets dans la réponse. Essayez de changer votre type de retour de la Liste des<Produit> et le retour de "produits". Vous n'avez pas besoin de sérialiser la chaîne vous-même, ASP.NET avec l'attribut WebMethod prendra soin de cela pour vous.
OriginalL'auteur ewrankin
En fait, si vous venez de supprimer la
partir de la méthode, et vous retourner le jsonString que vous sérialisé à l'aide de la JavaScriptSerializer vous obtiendrez exactelly la sortie que vous recherchez.
OriginalL'auteur Radu094
Avis que u ont des guillemets à côté ur tableau dans votre réponse.De cette façon, u retour au format json pas d'objet json à partir d'ur de la méthode web.Le format Json est une chaîne de caractères.Donc u utiliser json.parse() la fonction afin d'analyser chaîne json pour objet json.Si u ne voulez pas l'utiliser analyser fuction,u pour supprimer la sérialisation dans ur de la méthode web.Donc u obtenir un objet json.
OriginalL'auteur Onr
.net web service
dans android
lorsque l'objet json passer .net, sam application (avec [ScriptMethod(ResponseFormat = ResponseFormat.Json)] ) la réponse à partir d'android a <balise xml... pas püre données json
Votre code n'est pas pertinente à la question posée.
j'ai eu le même problème "{"d":"[{....." mais dans ma méthode, je slove
OriginalL'auteur ismail uzunok