0

我有两个收藏:

第一个是“父”节点:

例如

汽车

公司
...

在每一个之下,都有一些数据。

  1. 汽车
    1.1。本田
    1.2。福特

  2. 2.1。哈里森福特
    2.2。心理
    2.3。杰西卡·阿尔芭
  3. 公司
    3.1。甲骨文
    3.2。微软

等等...

这些是我可以在我的 C# 应用程序中迭代的项目。

为了生成一个模仿上述树的 JSON,我将如何构建一个 dataTable(或任何最适合它的对象)?

这就是我所拥有的,但它并没有真正给我我需要的东西:

public DataTable getNotificationTypeByUser(int id)
        {
            var bo = new HomeBO();
            var list = bo.GetNotificationsForUser(id);
            var notificationTreeNode = (from GBLNotifications n in list
                                 where n.NotificationCount != 0
                                 select new NotificationTreeNode(n)).ToList();

            var table = new DataTable();

            var column1 = new DataColumn
            {
                DataType = Type.GetType("System.String"),
                ColumnName = "NotificationType"
            };

            table.Columns.Add(column1);

            var column2 = new DataColumn
            {
                DataType = Type.GetType("System.String"),
                ColumnName = "NotificationDescription"
            };

            table.Columns.Add(column2);

            foreach (var node in notificationTreeNode)
            {
                var row1 = table.NewRow();
                row1["NotificationType"] = node.ToString();
                table.Rows.Add(row1);

                var notifications = bo.GetNotificationsForUser(id, node.NotificationNode.NotificationTypeId);

                foreach (GBLNotifications n in notifications)
                {
                    var row = table.NewRow();
                    row["NotificationDescription"] = n.NotificationDescription;
                    table.Rows.Add(row);
                } 
            }
            return table;
        }
4

3 回答 3

2

假设您已经拥有 Collections,您可以使用 Newtonsoft 等任何序列化程序将其序列化为 JSON

喜欢

using Newtonsoft.Json;

string json = JsonConvert.SerializeObject(yourlist);
于 2013-07-26T18:58:46.100 回答
1

好吧,不确定您的代码中发生了什么,但从您的层次结构描述来看,您需要这样的对象:

// along with their properties
public class Car { }
public class Person { }
public class Company { }

public class DataAggregate
{
    public List<Car> Cars { get; set; }
    public List<Person> People { get; set; }
    public List<Company> Companies { get; set; }
}

然后你像这样序列化它们:

public void SerializeData()
{
    var aggregate = new DataAggregate();
    // fill the aggregate accordingly -> from your data source (data tables or what have you)

    // this now has the JSON format format you're looking for
    string jsonData = JsonConvert.SerializeObject(aggregate);
}

我真的希望我没有误解你的问题。

于 2013-07-26T19:07:33.500 回答
0

这个如何。

        var Cars = new[] { "Honda", "Ford"};
        var People = new[] { "Harrison Ford", "Psy", "Jessica Alba" };
        var Companies = new[] { "Oracle", "Microsoft" };
        var result =  new {Cars, People, Companies };
        string json = Newtonsoft.Json.JsonConvert.SerializeObject(result);

上面的代码在下面产生字符串...

{“汽车”:[“本田”,“福特”],“人物”:[“哈里森福特”,“Psy”,“杰西卡阿尔巴”],“公司”:[“甲骨文”,“微软”]}

于 2013-07-26T21:10:26.250 回答