我有 Elmah 记录错误。错误会保存完整的表单发布信息。我可以通过 URL 访问这些错误及其 XML 或 JSON 表示。我想调试的一些错误发布了很多值,重现这些错误非常困难且耗时。
我想要的是一种使用 elmah 日志信息填充特定发布操作所需的模型的方法。然后我可以在单元测试中使用这个模型,看看为什么会发生错误。
到目前为止,我已经尝试从 XML 和 JSON elamh 错误信息解析为模型。以下是我尝试从 JSON 解析的内容:
MyModel model = ParseTo<MyModel>("Url of elmah json error");
public static T ParseTo<T>(string UrlOfJson)
{
string fullJsonString = string.Empty;
using(var webClient = new WebClient())
{
fullJsonString = webClient.DownloadString(UrlOfJson);
}
JObject o = JObject.Parse(fullJsonString);
string inputString = o.SelectToken("form").ToString();
return JsonConvert.DeserializeObject<T>(inputString);
}
这几乎可以工作。几乎是因为它不能反序列化 List 对象。
给定以下模型:
public class MyModel
{
public int CustomerId { get; set; }
public List<Offer> Offers { get; set; }
}
public class Offer
{
public int Id { get; set; }
public string Name { get; set; }
}
...而这个Json:
{
"CustomerId": "4564",
"Offers[0].Id": "635",
"Offers[0].Name": "name1",
"Offers[1].Id": "636",
"Offers[1].Name": "name2",
}
...解析器无法序列化Offers
属性,因为 Elmah 保存的 Json 格式不正确。它采用默认 ModelBinder 可以理解的格式,但是我如何针对这个 Json 运行它呢?
有什么想法可以将 Elamh 保存的 Json 序列化为模型对象吗?