我有我的数据库模型具有版本中,当我GET
对象的C#版本是byte[8]
但在JSON,对象似乎是一个字符串:AAAAAAAACXc=
要精确。序列化和反序列化实体框架版本
当我从我的js应用程序中执行POST
时,我的控制器接受动态c#对象,因为数据可以是任何派生类,我需要能够处理所有对象。
目前,我这样做是为了反序列化对象:
... Post([FromBody]dynamic data)
{
var jsonObj = JsonConvert.DeserializeObject(data.ToString());
//This line errors out
CareTaker careTaker = JavaScriptSerializer().Deserialize<CareTaker>(jsonObj.ToString());
}
但我得到一个错误:
exceptionMessage: "Cannot convert object of type 'System.String' to type 'System.Byte[]'"
因为在CareTaker
类中,Version
属性被定义为一个byte[]
但json字符串显示为AAAAAAAACXc=
..
如何将此版本字符串转换为其原始格式在:[0 0 0 0 0 0 9 119]
?
谢谢。
我想我会手动覆盖这个动态属性值的字节数组,所以走这条路线。我试图将字符串转换为正常的字节数组,但它似乎长度超过8,结束EF引发验证错误,说它应该是字符串或长度为8的byte[]
...
您是否在使用'Json.NET'和'System.Web.Script.Serialization'进行反序列化?为什么不使用'Json.NET'来反序列化到'CareTaker'? – GeorgeChond
@GeorgeChond哎呀,我试着如果我其中任何一个会做得更好,所以这是一个神器,'Json.net'只是返回null值为我的所有对象,所以我坚持与MS一现在 – LocustHorde