[英]Retrieving Data from LINQ to SQL in JSON format?
我有從數據庫到JSON格式的數據序列化問題。 我正在使用WebAPI 2和Entity Framework 6.我用EF創建了一個模型。 甚至創建了數據庫和包含內容的表。 當我使用下面的代碼時,我輸入http:// localhost:54149 / api / qr_group時出錯 。
控制器:
private EfContext db = new EfContext();
// GET api/<controller>
public IEnumerable<QR_Group> GetGroups()
{
var result = from g in db.QR_Groups
select g;
return result.ToList();
}
我不知道如何使用Newtonsoft.Json將表格與JSON格式的內容序列化。
我嘗試了以下代碼而不是上面的代碼:
public IQueryable<QR_Group> GetGroups()
{
var groupList = (from g in db.QR_Groups
select new
{
name = g.name,
code = g.code
}).AsQueryable();
var json = JsonConvert.SerializeObject(groupList);
return json; //error CS0029: Cannot implicitly convert type `string' to `System.Linq.IQueryable<RestApi.Models.QR_Group>'
}
我得到錯誤CS0029 ..如何解決這個問題以返回json中的數據? 提醒:QR_Group實體有3列(Id,名稱,代碼)
特別是對於你的第二個函數,JsonConvert.SerializeObject只是將任何對象序列化為JSON格式字符串,這意味着你應該返回一個字符串而不是一個IQueryable <>。
因此,對於控制器,有很多方法可以將其返回,例如: 在MVC中,如何返回字符串結果?
編輯:
以下代碼將是一種應該工作的方式:
控制器:
private EfContext db = new EfContext();
// GET api/<controller>
public ActionResult GetGroups()
{
var groupList = (from g in db.QR_Groups
select new
{
name = g.name,
code = g.code
}).AsQueryable();
return Content(JsonConvert.SerializeObject(groupList));
}
當你從api控制器返回列表時,你沒有提到錯誤。 因為我假設您正在返回一個數據庫實體,在簡單的情況下不允許您作為json結果,因為您的實體可能與數據庫中的其他實體鏈接。
現在將代碼修改為如下所示。 這只是為了讓你明白。
定義類型說QR_Group_Return
public class QR_Group_Return{
public string name{ get; set;}
public string code{ get; set;}
// Some other properties will go here.
}
現在,而不是返回IEnumerable<QR_Group>
我們將返回IEnumerable<QR_Group_Return>
private EfContext db = new EfContext();
// GET api/<controller>
public IEnumerable<QR_Group_Return> GetGroups()
{
var result = (from g in db.QR_Groups
select new QR_Group_Return {
name = g.name,
code = g.code,
// map your other properties also
}).ToList();
return result;
}
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.