如何正确地将 JArray 解析为字符串集合

Posted

技术标签:

【中文标题】如何正确地将 JArray 解析为字符串集合【英文标题】:How do I properly parse a JArray into a collection of strings 【发布时间】:2021-03-15 03:31:46 【问题描述】:

所以我将这个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."

【问题讨论】:

【参考方案1】:

这样的事情怎么样?

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

【讨论】:

太棒了!如此干净的解决方案,我喜欢你决定使用 LINQ 的方式! 很高兴能帮上忙!

以上是关于如何正确地将 JArray 解析为字符串集合的主要内容,如果未能解决你的问题,请参考以下文章

js如何正确解析HEX / fffd

c#如何把json值转化成jarray

从字典中正确地将字符串转换为 Json

Unity JsonUtility 没有正确地将字符串转换为对象

如何正确地将字符数组写入文本文件

在C#中将字符串的JARray从JObject转换为字符串数组