我在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)
- 属性LastName
为null
,属性CreationDate
为0001-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}
答案 0 :(得分:0)
格式yyyy-MM-dd hh:mi:ss:mmm
无效,因为它在毫秒部分之前有冒号:
。应该是yyyy-MM-dd hh:mi:ss.mmm
。