如何在对象数组中引用数组元素

本文关键字:引用 数组元素 数组 对象 | 更新日期: 2023-09-27 18:03:30

我有一个对象数组,通过反序列化序列化对象数组创建:

object[] jsonData = JsonConvert.DeserializeObject<object[]>(json);
包含:

{[3,"2016-06-11T08:35:00","Fleet Discussion ",1,"Maintenance"]}
{[7,"2016-07-14T09:45:00","Fleet Discussion, MX Issues",1,"Maintenance"]}
{[8,"2016-08-18T08:30:00","Fleet Discussion, APU",1,"Maintenance"]}

看起来像一个包含数组的对象数组。

我使用以下迭代器:

foreach (object item in jsonData) {
    // do stuff
}

每个项都被提取出来,因此对于每个项,我都有一个包含数组的对象:

{[3,"2016-06-11T08:35:00","Fleet Discussion ",1,"Maintenance"]}

但是,任何使用item[0]的尝试都是错误的(不能用[]索引对象)。

那么,如何在对象中引用数组元素呢?或者,如何从对象中提取数组?

编辑:进一步的细节:

下面是创建序列化对象的方法。希望有帮助:

private List<object> _Meetings = new List<object>{};
private string _Meetings_JSON = null;

(这些私有字段有getter/setter)

之后:

if (rs.HasRows) {
    while (rs.Read()) {
        object[] rec = new object[5];
        rec[MEETING_ID] =           (int) rs[MEETING_ID];
        rec[MEETING_DATETIME] =     (DateTime) rs[MEETING_DATETIME];
        rec[AGENDA] =               (string) rs[AGENDA];
        rec[MEETING_TYPE_ID] =      (int) rs[MEETING_TYPE_ID];
        rec[MEETING_TYPE] =         (string) rs[MEETING_TYPE];
        _Meetings.Add(rec);
    }
    _Meeting_JSON = JsonConvert.SerializeObject(_Meetings);
}

如何在对象数组中引用数组元素

item是对象,而不是数组。使用不带[0]的item访问。

基于进一步信息编辑

我会完全重写。为会议对象创建一个类,如下所示:

public class Meeting
{
    public int meetingID { get; set; }
    public DateTime meetingDateTime { get; set; }
    public String agenda { get; set; }
    public int meetingTypeId { get; set; }
    public String meetingType { get; set; }
}

读取时使用this:

private List<Meeting> _Meetings = new List<Meeting>{};
//...
while (rs.Read()) {
    Meeting rec = new Meeting() {
        meetingID = rs[MEETING_ID],
        meetingDateTime = rs[MEETING_DATETIME],
        agenda = rs[AGENDA],
        meetingTypeId = rs[MEETING_TYPE_ID],
        meetingType = rs[MEETING_TYPE]
    };
    _Meetings.Add(rec);
}

那么你应该有一个可以在foreach中引用的Meeting对象:

Meeting[] jsonData = JsonConvert.DeserializeObject<Meeting[]>(json);
foreach (Meeting item in jsonData) {
    // do stuff
}

item只是您的数组jsonDataobject的单个实例。你不能做item[0]因为它本身不是一个数组。如果你想使用它,只使用item本身,即没有括号。

另一方面,如果object实际上是一个派生类型,它本身是一个集合或数组,那么您可以强制转换它并像这样使用它:

((MoreDerivedCollectionType) item)[0]