Newtonsoft.Json不适用于一个字符串字段和一个日期时间字段

时间:2016-10-09 20:53:16

标签: c# datetime xamarin.android json.net

我在PCL项目中使用Newtonsoft.Json进行Xamarin.Android项目。

这就是我使用它的方式:

var r = await _client.GetAsync("users/login?email=" + e+ "&password=" + p);
string c = await r.Content.ReadAsStringAsync();

var dtC= new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd hh:mi:ss:mmm" };

return string.IsNullOrEmpty(c) ? new Transporter<User>() :
                JsonConvert.DeserializeObject<Transporter<User>>(c, dtC);

Transporter是一个json助手,它的类是(短版):

public class Transporter<T>
{
    public T data;
    private bool success = true;

    public Transporter()
    {
    }

    public bool isSuccess()
    {
        return success;
    }

    public void setSuccess(bool success)
    {
        this.success = success;
    }

    public T getData()
    {
        return data;
    }

    public void setData(T data)
    {
        this.data = data;
    }
}

User类:

[Table("User")]
public class User
{
    [PrimaryKey, AutoIncrement]
    public long Id { get; set; }

    public string Name { get; set; }

    public string LastName { get; set; }

    public string Email { get; set; }

    public string Password { get; set; }

    public DateTime CreationDate { get; set; }
}

User的所有属性都来自服务器。全部填满了。

但是,当我进行反序列化时,JsonConvert.DeserializeObject<Transporter<User>>(c, dtC) - 属性LastNamenull,属性CreationDate0001-01-01T00:00:00.0000000Z

修改

{"data":{"id":2,"name":"test","last_name":"test 1","email":"test2","password":"aaa","creation_date":"2016-09-20T21:13:22.18"},"success":true}

1 个答案:

答案 0 :(得分:0)

格式yyyy-MM-dd hh:mi:ss:mmm无效,因为它在毫秒部分之前有冒号:。应该是yyyy-MM-dd hh:mi:ss.mmm