在 C# 中解析 JSON 错误响应

Parsing JSON error response in c#

我正在尝试找出一种在 C# 中解析 JSON 错误消息的方法。 我可以收到如下所示的回复:

{
  "errors": {
    "title": ["can't be blank"]
  }
}

{
    "errors": {
        "inventory_policy": ["is not included in the list"]
    }
}

或者我可能会在响应中收到不止一个错误。

我如何才能在 C# 中解析那种动态响应?每个错误消息的密钥都不同。我可以将它反序列化为一个对象,该对象只有一个名为错误的字符串字典吗?

您可以将 json 反序列化为动态变量并访问对象

中的 属性
dynamic dynJson = JsonConvert.DeserializeObject(json);
foreach (var item in dynJson)
{
     // access dynamic property here
}

试试这个

var JsonObj = JObject.Parse(json);

foreach(var keyvaluepair in JsonObj.Cast<KeyValuePair<string,JToken>>().ToList())
{
    //keyvaluepair.Key
    //keyvaluepair.Value
}

JObject class 有一个包含这些属性的内部字典。可以枚举它的实例,并且可以访问每个子对象。这是一个示例代码:

string input = "{  \"errors\": {    \"title\": [\"can't be blank\"]  }}";
JObject json = JObject.Parse(input);

foreach (var item in json)
{
    Console.WriteLine($"{item.Key} _ {item.Value}");
}

JObject class 是在 Newtonsoft.Json 包中定义的,要从您的项目中引用它,您需要在 csproj 文件中添加以下包引用(或者自己做)使用 Nuget 包管理器):

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
  </ItemGroup>

希望这会有所帮助!