目前簡易的API已經架設完成
API功能只有抓取MSSQL資料表資料
輸入URL回傳如下
但是顯示出來的JSON卻沒有陣列的值,無法給APP呼叫,APP不知道要抓取哪個陣列
例如像網路上公開的API範例
網路上公開的api範例,假設loans這個陣列就是我的資料表的內容,但是我卻無法在這個陣列前加入我要的名稱(我的API回傳的JSON內容前面沒有類似loans這種值),小弟是用C#寫的,麻煩高手解惑!!
以下是我api抓sql的controller的程式碼
你沒有loans不知道怎麼抓資料的話,自己在外層包List
全部抓下來反序列化 在抓你自己要的資料。
不知道是不是你要的答案
public class ROOT
{
public List<DATA> DATA { get; set; }
}
public class DATA
{
public string ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gander { get; set; }
public string Salary { get; set; }
}
大大你的寫法跟我研究的方向是一樣的,但是我不清楚這段程式碼要加在哪裡,可以請大大再詳細跟我解釋一下嗎,大大你 public class DATA這段是預設在我的資料庫的地方(C#連結資料庫後預設的),請問我是要在那邊著手修改嗎,感謝你
不是, public class DATA 這個是ORM幫你做的,不需要改
先釐清一下問題好了~ 我想了一下發現我的答案應該不是你要的
你現在是要把吐的JSON資料改成有loans陣列的是嗎?
你在前端不能把全部資料抓下來deserialization嗎?
沒錯,DATA那邊ORM幫我做好了,是資料庫連結後就自動做好,對,我目前就是要把我的JSON給他一個陣列名稱,例如NAME[JSON DATA]這樣,但我目前抓出來的資料只有單純一個json陣列[JSON DATA]這樣,在前端把資料全部抓下來做反序列是什麼意思呢?目前我只有辦法把資料表的東西全部抓出來,在網頁上顯示JSON資料(WEB API),抓資料的程式碼只有上面我貼的那段,單純把資料表叫出來而已,還是說我這樣的寫法本身是有問題的呢?感謝你!!
你試試看
public class vmEmployees
{
public string ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gander { get; set; }
public string Salary { get; set; }
}
public object Get()
{
using(EmployeeDBEntities entities = new EmployeeDBEntities())
{
var result = (from a in entities.Employees
select new vmEmployees
{
ID=a.ID,
FirstName=a.First,
LastName=a.LastName,
Gander=a.Gander,
Salary=a.Salary
}).ToList();
}
return new { TestData = result };
}
想請問這段是要寫在我的controller裡面嗎?
是,我是用你的Get去改的,你複製貼上跑看看
相對應的都改成我的了,但是 return new { TestData = result };這邊無法執行
我是直接這段取代我的GET嗎?還是直接加入
整段取代
return無法執行,應該是你Get()的型別沒有改成object吧
有,整段取代了,但是無法執行!
那你把return 丟進using裡吧
或是 result這段撈資料的 獨立出來 放到model裡,在抓出來用
我的方式是自定義Json輸出的方式...
不是用資料庫給的Json函數輸出~
利用for xml path('')搭配stuff組Json字串~
最後將資料丟到輸出的字串再組一次~
底下是我自己習慣的VB寫法..你自己轉成你習慣的C#寫法..
Sql = ""
Sql &= " select '[' + Convert(nvarchar(max)"
Sql &= " ,stuff(("
Sql &= " select ',{""LvlID"":""' + Convert(varchar,SetLvl_ID) + '""'"
Sql &= " + ',""LvlName"":""' + isNull(SetLvl_Name,'') + '""}'"
Sql &= " from SetLvl"
Sql &= " order by SetLvl_Sort"
Sql &= " for xml path('')"
Sql &= " ),1,1,'')"
Sql &= " ) + ']' as SetStr"
ds = func.Data_OP("MSSQL", Sql, "select")
If ds.Tables(0).Rows.Count > 0 Then
Dim Rs As System.Data.DataRow = ds.Tables(0).Rows(0)
SetStr = Replace(Rs.Item("SetStr") & "", "&", "&")
If SetStr = "" Then
SetStr = "{""isconnection"":""false"",""data"":[],""errorMessage"":""無資料""}"
Else
SetStr = "{""isconnection"":""true"",""data"":" & SetStr & ",""errorMessage"":""""}"
End If
Else
SetStr = "{""isconnection"":""false"",""data"":[],""errorMessage"":""無資料""}"
End If
Response.Write(SetStr)