在 C# 中将 JSON 对象中的特定属性值转换为 IEnumerable

本文关键字:属性 转换 IEnumerable 中将 JSON 对象 | 更新日期: 2023-09-27 18:33:21

我有一个看起来像这样的JSON对象

{
"totalCount": 2,
    "students": [{
        "name": "abc",
        "data": {
            "Maths": 20,
            "Science": 25
        },
        "score": 10.0
    },
    {
        "name": "xyz",
        "data": {
            "Maths": 44,
            "Science": 12
        },
        "score": 11.0
    }]
}

我想将此 JSON 对象反序列化为包含所有名称的IEnumerable<String>

我要—— private IEnumerable<String> GetAllNames(string json)返回["abc","xyz"]

这只是示例数据(而不是家庭作业!!关于如何实现这一目标的任何建议将不胜感激。我正在使用牛顿软件库,但尚未能够有效地做到这一点。我不想遍历对象并自己构建列表,有什么直接的方法可以做到这一点吗?

编辑 -这就是我目前正在做的事情

var studentList = new List<string>();
var json = JsonConvert.DeserializeObject<dynamic>(jsonString);
foreach (var data in json.students)
   {
     catalogsList.Add(data.name.toString());
   }
return catalogsList;

在 C# 中将 JSON 对象中的特定属性值转换为 IEnumerable

试试这个:

private IEnumerable<string> GetAllNames(string json)
{
    JObject jo = JObject.Parse(json);
    return jo["students"].Select(s => s["name"].ToString());
}