我正在使用下面的代码进行序列化。
var json = JsonConvert.SerializeObject(new { summary = summary });
summary
是 SplunkDataModel
类型的自定义对象:
public class SplunkDataModel
{
public SplunkDataModel() {}
public string Category { get; set; }
public int FailureCount { get; set; }
public Dictionary<string, SplunkError> FailureEntity { get; set; }
public Dictionary<string, string> JobInfo { get; set; }
public string JobStatus { get; set; }
public int SuccessCount { get; set; }
public List<string> SuccessEntity { get; set; }
public int TotalCount { get; set; }
}
以下 JSON 中的序列化结果:
{
"summary": {
"Category": "category",
"JobStatus": "Failure",
"JobInfo": {
"Course processing failed": ""
},
"TotalCount": 0,
"SuccessCount": 0,
"FailureCount": 0,
"FailureEntity": {},
"SuccessEntity": []
}
}
现在,出于单元测试的目的,我需要反序列化它,但下面的代码返回一个具有空值的对象。我哪里错了?
var deserialized = JsonConvert.DeserializeObject<SplunkDataModel>(contents);
最佳答案
在我这边,这是因为我的属性没有public setter。 而不是拥有
public class MyClass
{
public int FileId { get; }
}
我应该有
public class MyClass
{
public int FileId { get; set; }
}
愚蠢的错误让我花了几个小时......
关于c# - Json.net 反序列化返回一个空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399475/