Comment faire simple objet JSON à l'aide de C# string Builder
Je suis nouveau en JSON, et que vous voulez faire simple objet JSON à l'aide de StringBuilder qui serait demandé par un appel Ajax jQuery.
[WebMethod]
public static string GetmyJSON()
{
StringBuilder sb = new StringBuilder();
sb.Append("{firstname: \"Manas\",").Append("lastname : \"Tunga\"").Append("}");
return sb.ToString();
}
Dans mon code côté client, j'ai:
.ajax({
type: "POST",
url: "simplePage.aspx/GetmyJSON",
data: "{}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data.d.firstname);
} //end of sucess
}); //End of ajax
Mais mon message d'alerte s'affiche "undefined" au lieu de "Manas'.
Est-il possible de retourner un objet JSON à l'aide de StringBuilder?
- Vous pouvez construire des .net objet qui encapsule les données que vous voulez envoyer en arrière et serailze en JSON, par l'intermédiaire de la bibliothèque comme JSON.Net. Si vous voulez un peu intégrée technique puis faire un peu de recherche avec DataContractSerializer
- Si vous insistez pour le faire de cette façon, l'éther changer le
\"
à'
, l'éther de le changer pour\\\"
- JSON noms de propriété doit être cité, c'est à dire:
{"id":10}
Vous devez vous connecter pour publier un commentaire.
Jamais le faire. Jamais construire JSON manuellement. Toujours utiliser JSON sérialiseurs. Ou, dans votre cas, vous n'avez même pas besoin de le faire parce que la ASP.NET webmethod d'exécution prendra soin. Tout ce que vous avez à faire est de se concentrer sur les besoins de votre entreprise et ne vous inquiétez pas au sujet de la plomberie.
Ainsi, par exemple commencer par la définition d'un modèle qui permettra de représenter vos données:
et ensuite votre web méthode de retour de ce modèle en laissant toute la sérialisation des préoccupations du cadre:
Et maintenant, il suffit de consommer cette méthode à partir du client:
Pas besoin de s'inquiéter à propos de JSON, chaîne constructeurs, ...
Et vous pouvez aussi passer des arguments complexes à votre méthode web si vous avez besoin de:
et puis:
et enfin:
La
JSON.stringify
méthode présentée ici est nativement intégré dans les navigateurs modernes. Si vous avez besoin de support des navigateurs existants vous pouvez inclure le json2.js script à votre page.alert($.parseJSON(data.d).firstname);
. Mais s'il vous plaît, oh s'il vous plaît me promets que tu ne fera jamais rien comme ça.n'oubliez pas d'ajouter une référence à :
Strictement répondre à la question, oui vous pouvez retourner tout ce que vous voulez à partir d'un .NET de la méthode. Votre problème, @canon dit dans un commentaire sur la question, c'est probablement que vous devez emballer les noms de propriété.
Qui explique pourquoi la réponse "correcte" (comme déjà mentionné: Un, Deux) est d'utiliser un sérialiseur comme JSON.NET (si vous devez manuellement sérialiser) ou à laisser .NET le manipuler (comme c'est le cas dans la plupart des "récentes" itérations) par le renvoi de l'objet lui-même.