使用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

我有一个JSON响应,我想用JSON.NET解析它。我以前使用单值进行过此操作,但从未在响应可能包含由数组组成的对象时使用过,正如下面的
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();

        }