У меня проблема с JSON и десериализацией. У меня есть живой производственный код, который использует объект сообщения для передачи информации из одной системы в другую. Идентификатор сообщения очень важен, поскольку он используется для его идентификации. Мы также не хотим, чтобы кто-либо устанавливал идентификаторы и поэтому сделал его частным установщиком.
Моя проблема возникает при попытке десериализации объекта JSON, а идентификатор не установлен. (очевидно, потому что это личное)
Есть ли у кого-нибудь хорошее предложение, как лучше всего действовать? Я пробовал использовать изериализацию, но она проигнорирована. Я пробовал использовать DataContract, но это не удалось из-за внешней системы, из которой мы получаем данные.
Мой единственный вариант в таблице на данный момент - сделать поля ID и TimeCreated общедоступными установщиками.
У меня есть объект как таковой
Message
{
public Message()
{
ID = Guid.NewGuid();
TimeCreated = DateTime.Now();
}
Guid ID { get; private set; }
DateTime TimeCreated { get; private set; }
String Content {get; set;}
}
Теперь я использую следующий код:
var message = new Message() { Content = "hi" };
JavaScriptSerializer jss = new JavaScriptSerializer();
var msg = jss.Serialize(message);
var msg2 = jss.Deserialize<Message>(msg);
Assert.IsNotNull(msg2);
Assert.AreEqual(message.ID, msg2.ID);
Поля Id и Time created не совпадают, потому что они частные. Я также пробовал внутренние и защищенные, но здесь тоже не было радости.
Полный объект имеет конструктор, который принимает идентификатор и дату, чтобы установить их при загрузке их из БД.
Любая помощь будет принята с благодарностью. .
Спасибо