使用JSON.Net解析数组的属性
我有一个JSON响应,我想用JSON.NET解析它。我以前使用单值进行过此操作,但从未在响应可能包含由数组组成的对象时使用过,正如下面的使用JSON.Net解析数组的属性,json.net,Json.net,我有一个JSON响应,我想用JSON.NET解析它。我以前使用单值进行过此操作,但从未在响应可能包含由数组组成的对象时使用过,正如下面的errors属性所做的那样 { "code": "InvalidObject", "message": "payment object is invalid", "errors": [ { "code": "AccountingApi", "message": "Paid amount cannot be greate
errors
属性所做的那样
{
"code": "InvalidObject",
"message": "payment object is invalid",
"errors": [
{
"code": "AccountingApi",
"message": "Paid amount cannot be greater than the amount of the invoice.",
"resource": "payment",
"field": "amount"
},
{
"code": "AccountingApi",
"message": "Payment has not been verified",
"resource": "payment",
"field": "verification"
}
]
}
我想将错误消息提取到列表中。如何指定要获取errors
集合中的message
属性
List<string> errorMessages = parsedJson["errors"].ToList<string>();
List errorMessages=parsedJson[“errors”].ToList();
您可以使用
class Error
{
public string code { get; set; }
public string message { get; set; }
public string resource { get; set; }
public string field { get; set; }
}
class Some
{
public string code { get; set; }
public string message { get; set; }
public List<Error> errors { get; set; }
}
类错误
{
公共字符串代码{get;set;}
公共字符串消息{get;set;}
公共字符串资源{get;set;}
公共字符串字段{get;set;}
}
分类
{
公共字符串代码{get;set;}
公共字符串消息{get;set;}
公共列表错误{get;set;}
}
然后(可能会将json字符串作为param发送)
List parse()
{
var s=新的StringBuilder();
s、 附加(“{”);
s、 追加(“\”代码\“:\”无效对象\“,”);
s、 追加(“\”消息\“:\”支付对象无效\“,”);
s、 追加(“\”错误\“:[”);
s、 附加(“{”);
s、 追加(“\”代码“:\”会计API\“,”);
s、 追加(“\”消息\“:\”已付金额不能大于发票金额。\”,“”);
s、 追加(“\”资源“:\”支付“,”);
s、 追加(“\”字段\“:\”金额\“);
s、 追加(“},”);
s、 附加(“{”);
s、 追加(“\”代码“:\”会计API\“,”);
s、 追加(“\”消息\“:\”付款未验证\“,”);
s、 追加(“\”资源“:\”支付“,”);
s、 追加(“\”字段\“:\”验证\“);
s、 附加(“}”);
s、 附加(“]”);
s、 附加(“}”);
var json=s.ToString();
var obj=JsonConvert.DeserializeObject(json);
返回obj.errors.Select(x=>x.message.ToList();
}
List<string> parse()
{
var s = new StringBuilder();
s.Append("{");
s.Append(" \"code\": \"InvalidObject\",");
s.Append("\"message\": \"payment object is invalid\",");
s.Append("\"errors\": [");
s.Append("{");
s.Append("\"code\": \"AccountingApi\",");
s.Append("\"message\": \"Paid amount cannot be greater than the amount of the invoice.\",");
s.Append("\"resource\": \"payment\",");
s.Append("\"field\": \"amount\"");
s.Append("},");
s.Append("{");
s.Append("\"code\": \"AccountingApi\",");
s.Append("\"message\": \"Payment has not been verified\",");
s.Append("\"resource\": \"payment\",");
s.Append("\"field\": \"verification\" ");
s.Append("}");
s.Append("]");
s.Append("}");
var json = s.ToString();
var obj = JsonConvert.DeserializeObject<Some>(json);
return obj.errors.Select(x => x.message).ToList();
}