从对象数组中提取元素值的问题

时间:2013-12-04 14:35:36

标签: c# arrays json generics

问题背景:

我有一个对象层次结构,它包含一个对象数组的对象数组。我编写了类来从JSON表示中正确地反序列化该对象。

代码:

var list = new People
{
    PersonList = new object[]
    {
      new object[]
     {
       "Test1", "Test2", "Test3", null, new Person{Name="John", Age=21}, 1
     },
      new object[]
     {
       "Test4", "Test5", "Test6", null, null, 2
     },
     new object[]
     {
       "Test17", "Test8", "Test9", null, new Person{Name="Sara", Age=31}, 3
     },
        new object[]
     {
       "Test10", "Test11", "Test12", null, null, 4
     },
     new object[]
     {
         "Test13", "Test14", "Test15", null, new Person{Name="John", Age=31}, 5
     }
     }
};

string output = JsonConvert.SerializeObject(list);

var objList = JsonConvert.DeserializeObject<People>(output);

objectList = objList.PersonList;

foreach (var objectItem in objectList)
{

   //Extract elements from the looped 'objectItem' array.

}

问题:

目前我似乎无法从单个对象数组中提取数据。上面的for循环允许访问每个对象数组,但我无法获取其中的元素。

有谁能让我知道如何提取这些数据?

1 个答案:

答案 0 :(得分:1)

这将有助于定义项目在循环中的类型:

foreach (JArray objectItem in objectList)
{
    // extract them by index
    var val1 = objectItem[0];
}

正如詹姆斯所说,你也可以循环通过内部object[],就像你是外部的一样。