我创建了一个用于反序列化 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/