将数据序列化到模型中是将空值传递给我的输出C#

时间:2016-02-20 14:34:53

标签: c# json

我有一个方法是从我的数据库中读取一个序列化字符串,然后在将其传递到我的模型时尝试对其进行序列化,为此,我将硬编码数据,它给了我相同的结果双向

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中)但似乎它同时丢失了,所以当我返回我的模型时,它总是我的模型的空白实例

非常感谢任何帮助

2 个答案:

答案 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}";