【问题标题】:How to serialize Linq to SQL data to JSON in C#如何在 C# 中将 Linq to SQL 数据序列化为 JSON
【发布时间】:2014-09-19 19:59:54
【问题描述】:

我正在尝试生成 JSON。数据在那里,但我的理解是我需要对其进行序列化才能使其工作。我是 C# 的初学者,所以 newtonsoft 网站上的文档对我来说有点陌生。这是我的 C# 代码。

public partial class Pages_ChartTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static IEnumerable<procReportSalesCountsResult> jsonData()
    {
        using (OpsDBDataContext dc = new OpsDBDataContext())
        {     
            return dc.ReportSalesCounts().ToList();          
        }   
    }
}

我序列化的最后一步是什么。我在 ASP 中使用 Linq To SQL 提取了这些数据。谢谢你们。

【问题讨论】:

  • 如果您提出GET 请求,现在会发生什么?
  • 如果我在我的 JS 文件中发出 get 请求,我会收到 500 错误。如果我从同一个文件发出 POST 请求并输出到控制台,我会得到 {"d":[{"__type":"procReportSalesCountsResult","MonthID":null,"SoldCount":74,"MonthName":"Jan "},{"__type":"procReportSalesCountsResult","MonthID":null,"SoldCount":74,"MonthName":"Feb"},{"__type":"procReportSalesCountsResult","MonthID":null,"SoldCount ":114,"MonthName":"Mar"}
  • 除了一些奇怪的编码(在 74 这个月 Feb)你粘贴在那里的东西(我希望不是原来的)和一个丢失的 ]} 在结束(我希望在原始文件中)对我来说看起来像是有效的 JSON。尝试将其粘贴到jsonlint.org
  • 显示有效。我不需要序列化吗?
  • 除非您希望以其他方式对其进行序列化,否则不会。你已经告诉它你想要带有ResponseFormat = ResponseFormat.Json的json。

标签: c# json serialization


【解决方案1】:

.NET 直到 4.5 才原生支持 JSON。直接从 VS 包管理器下载 Newtonsoft 的 Nuget package JSON.net

http://james.newtonking.com/json

public static string jsonData() {
    var buffer = null;
    using (OpsDBDataContext dc = new OpsDBDataContext()) {
        buffer = dc.ReportSalesCounts().ToList();
    } 
    return JsonConvert.SerializeObject(buffer);
}

【讨论】:

  • 我做到了。我引入了 newtonsoft 命名空间。感谢你的回复。我只是不知道如何在我的代码中实现它
  • JsonConvert.SerializeObject(object) 返回字符串
  • 谢谢马克。就这样?对不起,我只是在学习。公共静态 IEnumerable jsonData() { using (OpsDBDataContext dc = new OpsDBDataContext()) { return dc.ReportSalesCounts().ToList(); } JsonConvert.SerializeObject(dc.ReportSalesCounts().ToList()); }
  • 您的评论没有注释为代码,所以有点难以理解。在我看来,您正在创建一个公共静态方法来返回一个 ienumerable,然后在您的 using 语句中,您通过返回列表来终止它。如果我正确阅读以上内容,您将看不到该 json 数据。也许:尝试在您的 using 语句上方实例化一个 ienumerable,在 using 中将其设置为等于您的 counrs().ToList(),然后返回 SerializeObject 调用的响应。
  • 那里,在上面添加了实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多