如何使用json.net将c#泛型列表转换为json?

18

我正在将我的datatable转换为C#泛型列表。

 DataTable dt = mydata();
 List<DataRow> list = dt.AsEnumerable().ToList();
现在我该如何使用json.net将这个list转换为JSON?有什么建议吗?
JSON格式的示例应该像这样,
{"Table" : [{"userid" : "1","name" : "xavyTechnologies","designation" : "",
"phone" : "9999999999","email" : "test@test.com","role" : "Admin","empId" : "",
 "reportingto" : ""},{"userid" : "2","name" : "chendurpandian","designation" :
 "softwaredeveloper","phone" : "9566643707","email" : "chendur.pandia@gmail.com",
 "role" : "Super User","empId" : "1","reportingto" : "xavyTechnologies"},
{"userid" : "3","name" : "sabarinathan","designation" : "marketer","phone" :
"66666666666","email" : "bala3569@gmail.com","role" : "User",
 "empId" : "2","reportingto" : "chendurpandian"}]}
2个回答

25

这里有一个例子:

using System;
using System.Data;
using Newtonsoft.Json.Linq;

class Test
{
    static void Main()
    {
        DataTable table = new DataTable();
        table.Columns.Add("userid");
        table.Columns.Add("phone");
        table.Columns.Add("email");

        table.Rows.Add(new[] { "1", "9999999", "test@test.com" });
        table.Rows.Add(new[] { "2", "1234567", "foo@test.com" });
        table.Rows.Add(new[] { "3", "7654321", "bar@test.com" });

        var query = from row in table.AsEnumerable()
                    select new {
                        userid = (string) row["userid"],
                        phone = (string) row["phone"],
                        email = (string) row["email"]            
                    };

        JObject o = JObject.FromObject(new
        {
            Table = query
        });

        Console.WriteLine(o);
    }
}

文档:使用Json.NET进行LINQ to JSON


示例使用了 LINQ,但我想使用一个通用列表。 - ACP
3
@Pandiya:只需将 table.AsEnumerable() 更改为 list。考虑到你在示例中使用了 DataTable,我认为你想要一个 DataTable 作为你的原始数据来源......否则你为什么费劲写那部分代码呢? - Jon Skeet

21

这对我似乎没有起作用,sJON返回空{}。 - Rohit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接