C# 以JSON格式序列化数据库中的数据

C# 以JSON格式序列化数据库中的数据,c#,asp.net,json,web-services,asmx,C#,Asp.net,Json,Web Services,Asmx,我正在asp.net中创建一个web服务,它以JSON格式序列化数据,并通过JQuery访问此web服务 using System; using System.IO; using System.Net; using System.Web; using System.Linq; using System.Web.Hosting; using System.Web.Services; using System.Web.Script.Services; using System.Collections

我正在asp.net中创建一个web服务,它以JSON格式序列化数据,并通过JQuery访问此web服务

using System;
using System.IO;
using System.Net;
using System.Web;
using System.Linq;
using System.Web.Hosting;
using System.Web.Services;
using System.Web.Script.Services;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace Chart_WebService
{
    /// <summary>
    /// Summary description for Service
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [ScriptService]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Service : System.Web.Services.WebService
    {
        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public DataTable GetData()
        {
           string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
           using (SqlConnection con = new SqlConnection(constr))
           {
               using (SqlCommand cmd = new SqlCommand("SELECT * FROM Customers"))
               {
                   using (SqlDataAdapter sda = new SqlDataAdapter())
                   {
                       cmd.Connection = con;
                       sda.SelectCommand = cmd;
                       using (DataTable dt = new DataTable())
                       {
                           dt.TableName = "Customers";
                           sda.Fill(dt);
                           return dt;
                       }
                   }
               }
           }
       }
    }
}
使用系统;
使用System.IO;
Net系统;
使用System.Web;
使用System.Linq;
使用System.Web.Hosting;
使用System.Web.Services;
使用System.Web.Script.Services;
使用System.Collections.Generic;
使用System.Web.Script.Serialization;
名称空间图表\u Web服务
{
/// 
///服务概要说明
/// 
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[脚本服务]
//要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
//[System.Web.Script.Services.ScriptService]
公共类服务:System.Web.Services.WebService
{
[网络方法]
[ScriptMethod(UseHttpGet=true,ResponseFormat=ResponseFormat.Json)]
公共数据表GetData()
{
string constr=ConfigurationManager.ConnectionString[“constr”].ConnectionString;
使用(SqlConnection con=newsqlconnection(cont))
{
使用(SqlCommand cmd=newsqlcommand(“从客户中选择*))
{
使用(SqlDataAdapter sda=newsqldataadapter())
{
cmd.Connection=con;
sda.SelectCommand=cmd;
使用(DataTable dt=newdatatable())
{
dt.TableName=“客户”;
sda.填充(dt);
返回dt;
}
}
}
}
}
}
}
请帮助我完成此解决方案,因为我不知道如何完成它
希望你们

我不会返回
数据表
。您可以使用原始ADO.NET并将结果填入一个简单的
字典
。使用
Newtonsoft.Json
可以序列化字典并返回它

您最好在这个解决方案中使用Data Reader,然后转换成一个列表,这个列表将被序列化为JSON,代码如下所示:

using (var conn = new SqlConnection(ConnectionString))
        {
            conn.Open();
            using (var comm = new SqlCommand(command, conn))
            {
                using (var reader = comm.ExecuteReader())
                {
                       Customers= reader.Cast<IDataRecord>().Select(x=>
                        new Customer
                        {
                            ID = (int)x["ID"],
                            name = x["name"].ToString(),

                        }).ToList();
                }
            }
        }
var json = JsonConvert.SerializeObject(Customers);
使用(var conn=new SqlConnection(ConnectionString))
{
conn.Open();
使用(var comm=new SqlCommand(command,conn))
{
使用(var reader=comm.ExecuteReader())
{
Customers=reader.Cast()。选择(x=>
新客户
{
ID=(int)x[“ID”],
name=x[“name”].ToString(),
}).ToList();
}
}
}
var json=JsonConvert.SerializeObject(客户);

就是这样

通常不欢迎提出“请做我的工作”的问题,如果你有任何疑问,请提出问题,不要让别人做你的工作。你有什么错误吗?有什么问题吗?错误的响应格式?如果是,那么你如何发送请求?同意@Gusman这里的链接可能会帮助@Ali,但是任何以“我如何使用数据表”{x}开头的问题的第一步总是(或者至少应该总是)“出于对生命本身的热爱,停止使用数据表”是的,这会起作用;就我个人而言,我可能会填充一个
客户
模型(通过dapper或类似工具),只是为了给序列化程序提供额外的上下文(和反序列化的能力),以及更灵活地控制名称等的能力,但从根本上说,这会很好。是的,一个模型会很好。但我有一本字典,因为他在他的问题中使用了
select*from…