Я немного удивлен, что этот вопрос задавался много раз раньше, но наиболее многократно используемое и дружественное решение не было задокументировано.
У меня часто есть веб-страницы, использующие AngularJS, и когда я нажимаю на кнопку Сохранить, я «помещаю» эти данные обратно на мою страницу .aspx или обработчик .ashx, чтобы сохранить их обратно в базу данных. Данные будут представлены в виде записи в формате JSON.
На сервере, чтобы превратить необработанные опубликованные данные обратно в класс C #, вот что я хотел бы сделать.
Сначала определите класс C #, который будет содержать опубликованные данные.
Предположим, что на моей веб-странице публикуются данные в формате JSON:
{
"UserID" : 1,
"FirstName" : "Mike",
"LastName" : "Mike",
"Address1" : "10 Really Street",
"Address2" : "London"
}
Тогда я бы определил класс C # следующим образом ...
public class JSONRequest
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
}
(Эти классы могут быть вложенными, но структура должна соответствовать формату данных JSON. Поэтому, если вы публикуете запись пользователя JSON со списком записей Order внутри нее, ваш класс C # также должен содержать List<>
Порядка записи.)
Теперь в моем файле .aspx.cs или .ashx мне просто нужно это сделать, и оставить тяжелую работу в JSON.Net ...
protected void Page_Load(object sender, EventArgs e)
{
string jsonString = "";
HttpContext.Current.Request.InputStream.Position = 0;
using (StreamReader inputStream = new StreamReader(this.Request.InputStream))
{
jsonString = inputStream.ReadToEnd();
}
JSONRequest oneQuestion = JsonConvert.DeserializeObject<JSONRequest>(jsonString);
И это все. Теперь у вас есть класс JSONRequest
, содержащий различные поля, которые были размещены на вашем сервере.