C# 如何返回多个类的对象?
我需要反序列化json,因此我创建了以下类结构:C# 如何返回多个类的对象?,c#,C#,我需要反序列化json,因此我创建了以下类结构: public class Detail { public string code { get; set; } public string type { get; set; } } public class User { public string name { get; set; } public string surname { get; set; } public string lastna
public class Detail
{
public string code { get; set; }
public string type { get; set; }
}
public class User
{
public string name { get; set; }
public string surname { get; set; }
public string lastname { get; set; }
}
public class Tenant
{
public List<User> user { get; set; }
public List<Detail> detail { get; set; }
}
public class RootObject
{
public Tenant tenant { get; set; }
}
Tenant
对象同时包含classuser
和detail
。现在user是一个用户列表,detail包含每个用户的详细信息列表。但不幸的是,我收到了以下错误消息:
Can not be converted implicitly the 'User.Tenant' type 'System.Collections.Generic.List <User.Tenant>' Tenant
无法隐式转换为“User.Tenant”类型“System.Collections.Generic.List”Tenant
在这一行:返回obj.tenant代码>
我猜是我弄错了发回数据的类型。但是我如何解决这个问题呢?取决于您真正需要的是什么
如果需要返回租户对象,请将方法签名/返回更改为此
public Tenant getTenant()
{
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant;
}
public List<User> getUsers()
{
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant.user; //?
}
公共租户getTenant()
{
var obj=JsonConvert.DeserializeObject(“json”);
归还承租人;
}
如果您需要用户,请更改您的方法签名/返回到此
public Tenant getTenant()
{
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant;
}
public List<User> getUsers()
{
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant.user; //?
}
公共列表getUsers()
{
var obj=JsonConvert.DeserializeObject(“json”);
返回obj.tenant.user;/?
}
但是,我建议您更改属性名称,使其具有正确的大写字母。如果您返回的是用户对象列表,那么将该属性称为用户而不是用户是有意义的。考虑一下您的数据模型,每个链接是一对一还是一对多,等等,并相应地编码/命名
MS命名建议()。问题在于,您的方法签名表明您将返回一个列表
,而您的返回类型明确表示它是一个租户
:
public List<Tenant> searchUser() {
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant; //Type is Tenant (according to RootObject)
}
public Tenant searchUser() {
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant; //Type is Tenant (according to RootObject)
}
public class RootObject
{
public List<Tenant> tenant { get; set; }
}
否则您必须更改租户
的根对象
类型:
public List<Tenant> searchUser() {
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant; //Type is Tenant (according to RootObject)
}
public Tenant searchUser() {
var obj = JsonConvert.DeserializeObject<RootObject>("json");
return obj.tenant; //Type is Tenant (according to RootObject)
}
public class RootObject
{
public List<Tenant> tenant { get; set; }
}
searchUser返回租户列表,但您试图从中返回单个租户。只需创建一个租户列表,从JSON对象中选择相关租户并将其作为列表返回即可。或者,如果确实需要用户对象,则返回列表。您可以直接将它们添加到列表中,也可以使用LINQ。@ManoDestra-uhm我认为您的意思是var-obj=JsonConvert.DeserializeObject(“json”)代码>对吗?如果是,我已经尝试过了,我得到了:obj不包含租户的任何定义
目前您的单一RootObject中有一个单一租户对象。如果希望返回租户,则必须将方法签名更改为返回租户,而不是列表。如果您想要用户,则返回列表。如果这是您需要的完整列表,那么只需返回obj.tenant.user
(您的属性名称应为大写):@IlDrugo:您能发布一个示例JSON文件以便我们调试它吗?只需将此行更改为:public List searchUser()
这行public Tenant searchUser()
您是指类属性吗?我在一本c#book上读到过,这是一个很好的选择,使用CamelCase。或及:)