[英]Deserialize with Json.Net fails on some fields
I try to deserialze Json into ac# object using Json.Net. 我尝试使用Json.Net将Json反序列化为ac#对象。
c# class: c#类:
public class Evaluation
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "avg")]
public string Average { get; set; }
[DataMember(Name = "median")]
public string Median { get; set; }
[DataMember(Name = "teacherID")]
public int TeacherId { get; set; }
[DataMember(Name = "evalType")]
public int EvaluationType { get; set; }
}
Unit Test: 单元测试:
[Test]
[TestCase()]
public void TestParsing()
{
string json = "{" +
"\"id\": 439476," +
"\"avg\": \"69\"," +
"\"median\": \"75\"," +
"\"teacherID\": 1," +
"\"evalType\": 1" +
"}";
Evaluation evaluation = JsonConvert.DeserializeObject<Evaluation>(json);
Assert.IsTrue(evaluation.Average.Equals("69"));
Assert.IsTrue(evaluation.EvaluationType == 1);
}
This fails because evaluation.Average is null and evaluation.EvaluationType is 0. The other fields are parsed correctly. 这会失败,因为evaluation.Average为null且evaluation.EvaluationType为0.其他字段已正确解析。
Why is this failing? 为什么这会失败?
Setting the DataContract
attribute on your class declaration should fix the problem: 在类声明上设置
DataContract
属性应解决问题:
[DataContract]
public class Evaluation
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "avg")]
public string Average { get; set; }
[DataMember(Name = "median")]
public string Median { get; set; }
[DataMember(Name = "teacherID")]
public int TeacherId { get; set; }
[DataMember(Name = "evalType")]
public int EvaluationType { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.