如何解决C#从JSON子代获取键/名称
我从API收到此JSON响应:
{
"type": "link","title": "One or more validation errors occurred.","status": 400,"traceId": "0000000000000","errors": {
"inputNumber": [
"Must be 5 characters."
],"inputWord": [
"required."
]
}
}
我正在使用带有AutoMapper的配置文件将响应映射到模型。这是我尝试将JSON错误属性映射到响应模型中的Dictionary<string,List<string>>
属性的代码:
// Map for Errors property
.AfterMap((src,dest) =>
{
dest.Errors = new Dictionary<string,List<string>>();
var jsonErrorDict = src.SelectTokens("errors").Children();
foreach (var token in jsonErrorDict)
{
// Not working right: Token contains both key and value
var key = token;
var value = new List<string>();
if (token.HasValues)
{
var jsonErrorkeyvalues = token.Children();
foreach (JToken innerToken in jsonErrorkeyvalues)
{
value.Add(innerToken.ToString());
}
dest.Errors.Add(key.ToString(),value);
}
}
但是令牌变量同时包含键(例如“ inputNumber”)和值(“必须为5个字符”),因此在完成映射后,它看起来像这样:
"errors": {
"\"inputNumber\": [\r\n \"Must be 5 characters.\"\r\n]": [
"[\r\n \"Must be 5 characters\"\r\n]"
],"\"inputWord\": [\r\n \"required\"\r\n]": [
"[\r\n \"required.\"\r\n]"
}
我只是测试它并从转义的字符串中获取响应,因此请忽略\ r之类的转义符号。
编辑: 我将其添加到关键变量中:
var key = token.ToString().Split(':');
然后将其添加到dest.Errors字典中时,我会这样做:
dest.Errors.Add(key[0],value);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。