首页 > 解决方案 > 如何正确地将 JArray 解析为字符串集合

问题描述

所以我把它JArray存储在一个类型的变量中object

public object Errors { get; }

其中包含任何一个

Errors = {[
  {
    "name": [
      "Username "admin" has already been taken."
    ],
    "email": [
      "Email is not a valid email address."
    ]
  }
]}

或者它会包含这个

Errors = {[
  "User not found."
]}

我希望能够像这样提取数据..email: "Email is not a valid email address."

我不知道该怎么做,这就是我到目前为止所拥有的

foreach (var error in (JArray)Errors)
{
    System.Console.WriteLine($"Type: {error.Type}");
}

如何正确提取错误,以便获得包含字符串的集合,例如 kvp 或email: "Email is not a valid email address."

标签: c#arraysjson.netjson.net

解决方案


这样的事情怎么样?

static List<string> ExtractErrors(JArray array)
{
    JToken item = array.FirstOrDefault();
    if (item.Type == JTokenType.Null)
    {
        return new List<string>();
    }
    if (item.Type == JTokenType.Object)
    {
        return item.Children<JProperty>()
                   .Select(jp => jp.Name + ": " + (string)jp.Value.FirstOrDefault())
                   .ToList();
    }
    return new List<string> { item.ToString() };
}

这是一个演示:https ://dotnetfiddle.net/md1oyn


推荐阅读