考虑以下json:
{
"title": "SOME TITEL","status": 500,"detail": "Some detail","errors": [
{
"Parameter": "SOME VALUE","Code": "SOME CODE","Message": "SOME MESSAGE","Details": "SOME EXTRA DetaILS"
}
]
}
它是由API响应生成的,该API响应构造了这样的问题详细信息:
var problemDetails = new ProblemDetails
{
Status = StatusCodes.Status500InternalServerError;
Detail = "DetaIL";
Title = "TITLE";
};
var customClass = new CustomCalss
{
Code = "INTERNAL_SERVER_ERROR",Message = "Some message",Details = "Extra details"
};
problemDetails.Extensions.Add(new keyvaluepair<string,object>("errors",new [] { customClass }));
当尝试使用System.Text.JsonSerialiser将json反序列化为问题详细信息时,我发现了以下问题:
- 状态,代码和标题未反序列化到问题详细信息属性,它们为空
- 扩展数据不会反序列化。
我正在测试这种行为:
var json = @"{
""title"": ""SOME TITLE"",""status"": 500,""detail"": ""Some detail"",""errors"": [
{
""Parameter"": null,""Code"": ""SOME CODE"",""Message"": ""SOME MESSAGE"",""Details"": ""SOME EXTRA DetaILS""
}
]
}";
var result = JsonSerializer.Deserialize<ProblemDetails>(json);
Assert.NotNull(result.Detail);
Assert.NotNull(result.Title);
var customClass = Assert.IsType<CustomCalss[]>(result.Extensions["errors"]);
var error = customClass.First();
Assert.Equal("INTERNAL_SERVER_ERROR",error.Code);
有什么见解吗?