如何动态创建List的名称?

时间:2014-03-21 07:08:02

标签: asp.net asp.net-mvc-3 asp.net-mvc-4 c#-4.0

我正在尝试创建=>

{
  "Data1":{
     "DataListOne": [0, 1],
     "DataListTwo": [1, 0, 0, 0]
          },
  "Data2":{
     "DataListOne": [1, 0],
     "DataListTwo": [0, 0, 0, 1]
          },
  "Data-n" : { 
     "DataListOne": [1, 0],
     "DataListTwo": [0, 1, 0, 0]
          } 
}

动态列出从Data1开始到未指定的Data-n,我需要停止该List,并且还希望Data1到Data-n中有两个List(DataListOne,DataListTwo)。

我没有得到如何从Data1动态创建List到Data-n以及动态列表中从Data1到Data-n的两个列表(DataListOne,DataListTwo)

请帮助我。

1 个答案:

答案 0 :(得分:2)

我为此使用了Json.NET - 它可以让你动态地构建JSON:

using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json.Linq;

class Program
{
    static void Main(string[] args)
    {
        var pairs = new List<ListPair>
        {
            new ListPair
            {
                DataListOne = { 0, 1 },
                DataListTwo = { 1, 0, 0, 0 }
            },
            new ListPair
            {
                DataListOne = { 1, 0 },
                DataListTwo = { 0, 0, 0, 1 }
            },
            new ListPair
            {
                DataListOne = { 1, 0 },
                DataListTwo = { 0, 1, 0, 0 }
            },
        };

        JObject json = CreateJson(pairs);
        Console.WriteLine(json);
    }

    static JObject CreateJson(List<ListPair> pairs)
    {
        return new JObject(pairs.Select(
           (pair, index) => new JProperty("Data" + (index + 1),
                                          JObject.FromObject(pair))));

    }

    class ListPair
    {
        public List<int> DataListOne, DataListTwo;

        public ListPair()            
        {
            DataListOne = new List<int>();
            DataListTwo = new List<int>();
        }
    }
}

另一方面,我认为在JSON中创建一个数组而不是动态生成名称会更清晰。