c# - 无法返回特定的嵌套类属性

标签 c#

我创建了一个用于反序列化 JSON 的类(我使用的是 JSON.net),这是结构:

public class User
{
    public string Name { get; set; }
    public string Surname { get; set;}
}

public class RootObject
{
    public List<User> Users { get; set; }
}

我像这样反序列化 JSON:

var obj = JsonConvert.DeserializeObject<RootObject>(responseText);

现在,如果我想返回所有 JSON,我只需执行以下操作:return obj.Users;但我如何返回类 User 的特定属性?特别是Name属性(property)。我试过这个:

return obj.Users.name // user list does not contain any name property

我也尝试过使用 LINQ:

obj.Select(c => c.Name).Single();

但我不能使用Select因为我需要声明obj如:

var obj = JsonConvert.DeserializeObject<List<RootObject>>(responseText);

如果我返回 obj.user;我可以使用 LINQ 并访问该名称。但是如何在返回响应的方法中做到这一点呢?

最佳答案

添加对类的引用

 using System.Linq;

由于 user 是 List 类型,因此您可以在其中应用 lambda 表达式。不要使用 Single,如果 user 中有多个记录,它将失败,请改用 FirstOrDefault。它将适用于零个或多个元素

var obj = JsonConvert.DeserializeObject<RootObject>(responseText);
string name = obj.user.Select(p=> p.name).FirstOrDefault();
string surname = obj.user.Select(p=> p.surname).FirstOrDefault();

关于c# - 无法返回特定的嵌套类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36714663/

相关文章:

c# - 添加 google font api 后仅显示安全内容

c# - 防止从 azure-windows 手机下载已下载的图像

c# - 如何从标准中获取 ip 地址信息?

c# - 在动态对象上调用方法基本上都是 GetMethod().Invoke() 吗?

javascript - JavaScript 中相当于 DateTime.Ticks

c# - 如何在通过自动化启动 Excel 时打开 personal.xls 工作簿?

c# - 在 C# 中表示此查找表的最佳方式

C# Silverlight 等效于 Windows 窗体方法?

c# - 转换 VB.NET --> C# 项目

c# - 如何在 Winform C# 上创建带圆角/圆边的按钮?