我有一个方法是从我的数据库中读取一个序列化字符串,然后在将其传递到我的模型时尝试对其进行序列化,为此,我将硬编码数据,它给了我相同的结果双向
const string serialized =
"{\"Id:\": 1,\"Title:\":\"Mr\" ,\"Name:\":\"Someone Random\",\"Dob:\":\"2016-02-20 00:00:00.000\",\"Address:\":\"Just around the corner\",\"Email:\":\"somone.random@email.com\",\"Telephone:\":\"000022233441\",\"Mobile:\":\"079999999\"}";
using (var sr = new StringReader(serialized))
{
using (var jr = new JsonTextReader(sr))
{
var js = new JsonSerializer();
var model = js.Deserialize<DataWrapper>(jr);
return model;
}
}
我的DataWrapper模型看起来像这样
public class DataWrapper
{
public int Id { get; set; }
public string Title { get; set; }
public string Name { get; set; }
public DateTime Dob { get; set; }
public string Address { get; set; }
public string Email { get; set; }
public string Telephone { get; set; }
public string Mobile { get; set; }
}
现在无论我是硬编码数据还是从数据库返回数据,它总是返回一个空白的模型
在我试图将数据反序列化到我的模型中时,数据实际上存在(在jr中)但似乎它同时丢失了,所以当我返回我的模型时,它总是我的模型的空白实例
非常感谢任何帮助
答案 0 :(得分:1)
在您的JSON字符串中,您添加了一个&#39;:&#39;在你的财产名称的末尾。漂亮印刷,你的JSON看起来像这样:
{
"Id:": 1,
"Title:": "Mr",
etc.
}
要自动映射到您的属性,请删除尾部冒号,即:
{
"Id": 1,
"Title": "Mr",
etc.
}
答案 1 :(得分:0)
您在属性的末尾写了“:”字符。删除它们,让它们像那样:
"{\"Id\":2,\"Title\":\"aaa\",\"Name\":null,\"Dob\":\"0001-01-01T00:00:00\",\"Address\":\"sdfsd\",\"Email\":null,\"Telephone\":null,\"Mobile\":null}";