Когда я делаю mvc ajax json post applicaiton, возникает проблема преобразования динамического объекта json в объект.Как преобразовать динамический объект json в объект C#
В моем приложении фильм является бизнес-объектом, json-объект имеет свойство статуса строки, чем объект фильма. Когда данные json отправляются на сервер mvc, он может быть преобразован в динамический объект, на этом этапе все нормально. Но после обработки некоторой логики каждому статусу строки необходимо преобразовать динамический объект в бизнес-объект фильма, а затем начать логику транзакций базы данных. Но есть troulbe, даже я пытаюсь использовать другой метод для создания объекта.
пожалуйста, кто-то использовал тот же метод литья? спасибо за ваш совет или ответ.
public class movie
{
public int id
{
get;
set;
}
public string title
{
get;
set;
}
}
/// <summary>
/// Convert Json Object to Entity
/// </summary>
/// <param name="id">ajax post value
/// format: {"id": "{\"id\": 1, \"title\": \"sharlock\", \"RowStatus\": \"deleted\"}"}
/// </param>
[AllowAnonymous]
[HttpPost]
public void DoJsonSimple(string id)
{
string title;
var entity = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(id);
//*** entity is dynamic object
//*** entity.id, entity.title and entity.RowStauts can be accessed.
int first = entity.id;
var status = entity.RowStatus;
if (status == "deleted")
{
//*** m1 is null
//*** m1.title can not be accessed
movie m1 = entity as movie;
title = m1.title;
//*** m2 is an empty object
//*** m2.id is 0, m2.title is null
var m2 = AutoMapperHelper<dynamic, movie>.AutoConvertDynamic(entity);
title = m2.title;
//*** Exception: Object must implement IConvertible.
var m3 = EmitMapper.EMConvert.ChangeTypeGeneric<dynamic, movie>(entity);
title = m3.title;
}
}
привет, Есть много объектов в моем проекте, если необходимо создать новый класс строк каждый объект, это тяжелые работы ... –
Вот почему я предложил вариант 1. Вам просто нужно десериализации ваш JSON два разного типа. Это намного меньше, чем борьба с динамикой. –
Да, лучше новый только один класс Row и десериализовать данные json дважды для любых объектов. отличные идеи, спасибо. –