У меня есть следующий граф объектов, и я использую JQuery $ .Ajax () для отправки этого идентичного объекта «View» в JSON (строковый) из браузера в метод страницы в ASP.Net. Десериализация JAvascript работает для всех строк и int в классе View, но My List
пуст.
Что я пробовал: Используя инструменты chrome dev, я взял строковый JSON, создал модульный тест и использовал как DataContractJsonSerializer
, так и JavaScriptSerializer
. Объект DataContractJsonSerializer
десериализовал мой граф объектов правильно, но JavaScriptSerializer
сбросил мой список. Как я могу получить правильную десериализацию метода моей страницы?
public class View
{
public string Text { get; set; }
public string AnotherText { get; set; }
public Int SomeInt { get; set; }
public List<DataItem> { get; set; }
}
public class DataItem
{
public Person person {get;set}
}
public class Person
{
public int Age {get;set}
}
var dataa = {mqvm: mqvmJSON };
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify( dataa ),
url: "GoHere.aspx/WebMethodName",
success: function(data) {
alert(data.d);
},
error: function(jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText + ' ' + errorThrown);
}
});
Вместо этого (view obj как параметр).
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public static string CreateResponseReview(View mqvm)
{
return "Success";
}
как я могу это получить? (параметр строки)
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public static string CreateResponseReview(string mqvm)
{
//do manual JSON deserialization here.
return "Success";
}
Мой JSON выглядит так.
{
"Text": "6",
"AnotherText":"wow"
"SomeInt": 5,
"DataItem":[
{
"person":{
"Age":23
}
},
{
"person":{
"Age":42
}
}
]
}