C# 如何创建对象数组?

C# 如何创建对象数组?,c#,C#,我已经创建了一个dll,可以对我的API执行一些请求。现在请求向我发回一个json响应,我要做的是(从dll)返回一个对象数组,该数组将在实现dll的程序中使用。现在我上了这门课: public class Details { public string name { get; set; } public string age { get; set; } } public class Info { public List<object> info { get

我已经创建了一个dll,可以对我的API执行一些请求。现在请求向我发回一个json响应,我要做的是(从dll)返回一个对象数组,该数组将在实现dll的程序中使用。现在我上了这门课:

public class Details
{
    public string name { get; set; }
    public string age { get; set; }
}

public class Info
{
    public List<object> info { get; set; }
}

public class User
{
    public Details details { get; set; }
    public Info info { get; set; }
}

public class RootObject
{
    public User user { get; set; }
}
我想知道的是:如何创建对象列表?特别是,我希望发回具有as属性
details
info
user
对象。结果应该是一个object'数组,因为调用该对象的人需要遍历其中的一个数组,并将每个对象属性读取为:

user[0].details.name: //where 0 is the index of the user (php syntax)

我不知道在c#中是否有可能,有人可以帮助我实现这个目标?

您的json转换器返回
列表
,并且每个
根对象
只包含一个属性:user。一个简单的Linq查询将
列表
更改为
列表
对象:

var users = obj.Select(o => o.user).ToList();
users
中的每个元素都是一个
用户
,具有
详细信息
信息
属性

作为如何使用此示例的示例,请考虑您有一种方法从JSON进行转换,并希望该方法返回用户列表。该方法看起来像这样:

var obj = JsonConvert.DeserializeObject<List<RootObject>>("json returned");
public List<User> GetUsersFromJson()
{
    var obj = JsonConvert.DeserializeObject<List<RootObject>>("json returned");
    var users = obj.Select(o => o.user).ToList();
    return users;
}
foreach (var user in users)
{
  var detail = user.details;
  var info = user.info;
}
foreach (RootObject elem in obj)
{
     foreach (Info info in elem.user.info.info)
     {
         object[] localInfo = info.info.ToArray(); //<- contains all the information
     }
}

您应该考虑将您的公共属性更改为C中的惯用做法。

< P>您的JSON转换器返回“代码>列表< /代码>,并且每个<代码> RootObject < /C> >只包含一个属性:用户。一个简单的Linq查询将
列表
更改为
列表
对象:

var users = obj.Select(o => o.user).ToList();
users
中的每个元素都是一个
用户
,具有
详细信息
信息
属性

作为如何使用此示例的示例,请考虑您有一种方法从JSON进行转换,并希望该方法返回用户列表。该方法看起来像这样:

var obj = JsonConvert.DeserializeObject<List<RootObject>>("json returned");
public List<User> GetUsersFromJson()
{
    var obj = JsonConvert.DeserializeObject<List<RootObject>>("json returned");
    var users = obj.Select(o => o.user).ToList();
    return users;
}
foreach (var user in users)
{
  var detail = user.details;
  var info = user.info;
}
foreach (RootObject elem in obj)
{
     foreach (Info info in elem.user.info.info)
     {
         object[] localInfo = info.info.ToArray(); //<- contains all the information
     }
}

你应该考虑改变你的公共属性,就像C中的惯例一样。

< P> JsonConvert。可以使用方法ToArray()将列表更改为数组

在这种情况下:

var obj = JsonConvert.DeserializeObject<List<RootObject>>("json returned");
RootObject[] array = obj.ToArray();

string s = array[0].user.details.name;
object[] infos = array[0].user.info.info.ToArray();
var obj=JsonConvert.DeserializeObject(“json返回”);
RootObject[]数组=obj.ToArray();
字符串s=数组[0]。user.details.name;
对象[]infos=array[0]。user.info.info.ToArray();
在此代码中:

foreach(var user in obj)
{
    item.user.details.name;
    //take some info (could not contain nothing)
    foreach(var info in user.info.info)
    {
         info; //<- contains all the information
    }
}
foreach(obj中的var用户)
{
item.user.details.name;
//获取一些信息(不能包含任何内容)
foreach(user.info.info中的变量信息)
{

info;//JsonConvert.DeserializeObject>返回根对象的列表。您可以使用方法ToArray()将列表更改为数组

在这种情况下:

var obj = JsonConvert.DeserializeObject<List<RootObject>>("json returned");
RootObject[] array = obj.ToArray();

string s = array[0].user.details.name;
object[] infos = array[0].user.info.info.ToArray();
var obj=JsonConvert.DeserializeObject(“json返回”);
RootObject[]数组=obj.ToArray();
字符串s=数组[0]。user.details.name;
对象[]infos=array[0]。user.info.info.ToArray();
在此代码中:

foreach(var user in obj)
{
    item.user.details.name;
    //take some info (could not contain nothing)
    foreach(var info in user.info.info)
    {
         info; //<- contains all the information
    }
}
foreach(obj中的var用户)
{
item.user.details.name;
//获取一些信息(不能包含任何内容)
foreach(user.info.info中的变量信息)
{

info;//您想要一个所有用户对象的列表吗?试试这个:
var users=obj.Select(x=>x.user.ToArray();
您想要一个所有用户对象的列表吗?试试这个:
var users=obj.Select(x=>x.user.ToArray());
我应该将该方法声明为
public List
?Linq查询本身不是一个方法。您可以将其添加到代码中的任何位置来进行转换。嵌入该方法的方法可以是public、private或其他任何形式,具体取决于您的设计。Ok似乎工作正常,只需像这样保存对象:
object user=User.GetUsersFromJson();
但我不明白如何遍历它,因为如果我这样做:
用户。
intellisense不显示任何用户类属性,相反,如果我放置断点,我可以看到用户和属性的列表。我得到以下错误:
foreach指令无法处理对象类型的变量,因为对象不包含在GetEnumerator的公共定义中
。特别是某些用户,用红色下划线表示。。有什么问题?如果不知道您的代码,就无法确切地说出您做错了什么。foreach中使用的对象很可能不是集合。我是否应该将该方法声明为
公共列表
?Linq查询本身不是一个方法。您可以将其添加到代码中的任何位置以进行转换。嵌入它的方法可以是公共的、私有的或任何取决于您的设计的方法。Ok似乎工作正常,只需一件事我将对象保存为这样:
object user=user.GetUsersFromJson();
但我不明白如何遍历它,因为如果我这样做:
用户。
intellisense不显示任何用户类属性,相反,如果我放置断点,我可以看到用户和属性的列表。我得到以下错误:
foreach指令无法处理对象类型的变量,因为对象不包含在GetEnumerator的公共定义中
。特别是用户,用红色下划线表示。。有什么问题吗?如果不知道代码,就无法准确判断错误所在。foreach中使用的对象很可能不是集合。