Je suis vraiment nouveau chez JSON, mais voici ce que j'ai obtenu. J'avais besoin de créer un objet qui contient un tableau/liste et quelques champs plats. Par exemple:Création, envoi et désérialisation d'un objet json contenant des tableaux
var names= new Array();
names[0] = "Christy";
names[1] = "Jeremy";
var obj = {
names: names,
age: "21+",
comment: "friends"
};
Je puis stringify et tenter de l'envoyer à un pagemethod via AJAX:
var jsonData = JSON.stringify(obj);
sendData(obj);
Et puis l'envoi:
function sendData(jsonData) {
$.ajax({
type: "POST",
url: "Default.aspx/TestArray",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert('win');
},
error: function (a, b, ex) {
alert('fail');
}
});
}
donc tous ensemble:
$(document).ready(function() {
$("#btnSubmit").click(function (e) {
e.preventDefault();
var names = new Array();
names[0] = "Christy";
names[1] = "Jeremy";
var obj = {
names: names,
age: "21+",
comment: "friends"
};
var jsonData = JSON.stringify(obj);
sendData(jsonData);
});
function sendData(jsonData) {
$.ajax({
type: "POST",
url: "Default.aspx/TestArray",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg.d);
},
error: function (a, b, ex) {
alert("oops: " + ex);
}
});
}
});
Je ne sais pas si je fais ce droit. Il ne va même pas à la webmethod, il va plutôt directement à la fonction d'erreur. Mais juste pour le plaisir de la conversation, voici ce que j'ai dans le behind:
[WebMethod()]
public static string TestArray(string guids)
{
Comment cmt = (Comment)JsonConvert.DeserializeObject(guids, typeof(Comment));
return "Winner";
}
Et la classe cours im essayant de désérialiser dans:
public class Comment
{
public List<string> names { get; set; }
public string age { get; set; }
public string comment { get; set; }
}
Voir [cette réponse] (http: // stackoverflow.com/a/9084625/283366) pour plus d'informations sur l'envoi de données JSON dans le corps du message brut – Phil