0

我有一个看起来像这样的 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"]

这只是样本数据(而不是家庭作业!!)。任何有关如何实现这一目标的建议将不胜感激。我正在使用 Newtonsoft 库,但还不能有效地做到这一点。我不想遍历对象并自己构建列表,有什么直接的方法吗?

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

var studentList = new List<string>();

var json = JsonConvert.DeserializeObject<dynamic>(jsonString);

foreach (var data in json.students)
   {
     catalogsList.Add(data.name.toString());
   }

return catalogsList;
4

1 回答 1

1

Try this:

private IEnumerable<string> GetAllNames(string json)
{
    JObject jo = JObject.Parse(json);
    return jo["students"].Select(s => s["name"].ToString());
}
于 2013-10-01T14:11:06.503 回答