我遇到了反序列化JSON响应的问题.
userResponse = JsonConvert.DeserializeObject<UserResponse>(result);
Run Code Online (Sandbox Code Playgroud)
json响应如下:
{
"Results" : [
{
"Id" : 1,
"Name" : "John",
"Age" : 50
}
],
"Paging" : {
"TotalPages" : 5,
"CurrentPage" : 1
}
}
Run Code Online (Sandbox Code Playgroud)
我的UserResponse类假设绑定到上面的JSON,如下所示:
[DataContract]
public class UserResponse
{
[DateMember(Name = "Results" )]
public List<User> Results {get;set;}
[DateMember(Name = "Paging" )]
public Paging Paging {get;set;}
}
[DataContract]
public class User
{
public int Id {get;set;}
public string Name {get;set;}
public int Age {get;set;}
}
[DataContract]
public class Paging
{
public int TotalPages {get;set;}
public int CurrentPage {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
当前的UserResponse外观是否有任何问题?我不确定为什么它没有正确绑定.
userResponse对象返回非空,但属性的值为null.
因为您正在使用,所以您DataContract还需要DataMember在其他类中包含该属性.使用DataContract是全有或全无.
如果您查看有关DataContract和DataMember属性的 Json.Net文档
[DataContract]
public class File
{
// excluded from serialization
// does not have DataMemberAttribute
public Guid Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Size { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
请注意示例中的注释.
因此,要解决您的问题,请删除所有DataContract和DataMember属性
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class Paging
{
public int TotalPages { get; set; }
public int CurrentPage { get; set; }
}
public class UserResponse
{
public List<User> Results { get; set; }
public Paging Paging { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或者让所有东西都适当地装饰各自的属性.
[DataContract]
public class User {
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
[DataContract]
public class Paging {
[DataMember]
public int TotalPages { get; set; }
[DataMember]
public int CurrentPage { get; set; }
}
[DataContract]
public class UserResponse {
[DataMember]
public List<User> Results { get; set; }
[DataMember]
public Paging Paging { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |