通過這個查詢,我可以選擇結果為 JSON。
string strQuery = "declare @json varchar(max) = (select field1 from table1 FOR JSON AUTO)print @json";
如何在 .Net 上使用這個結果以及應該使用什么型別的引數而不是 Newtonsoft.Json.Linq.JObject
using (TestEntities objEntities = new TestEntities())
{
Newtonsoft.Json.Linq.JObject strJson = objEntities.Database.SqlQuery<Newtonsoft.Json.Linq.JObject>(strQuery).FirstOrDefault();
Response.Write(strJson.ToString());
}
uj5u.com熱心網友回復:
您應該將其作為字串讀取,然后根據需要對其進行反序列化。但是無論如何您都在ToString對其進行處理,因此根本沒有必要對其進行反序列化。只需將其保留為字串。
此外,PRINT最多有 8000 個位元組(4000 個 Unicode 字符),用于資訊性訊息,不是為資料傳輸而設計的。使用SELECT來代替。
您還應該將 JSON 傳遞為 nvarchar(max)
using (TestEntities objEntities = new TestEntities())
{
const string strQuery = @"
declare @json nvarchar(max) = (
select field1
from table1
FOR JSON AUTO
);
select @json;
";
var result = objEntities.Database.SqlQuery<string>(strQuery).FirstOrDefault();
Response.Write(result);
// alternatively
var strJson = Newtonsoft.Json.Linq.JObject.Parse(result);
}
不要試圖直接使用
SELECTwithFOR JSON,因為當結果超過 2000 個字符時會出現問題。你必須先把它放在一個變數中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/386270.html
標籤:json 。网 sql-server 实体框架
下一篇:如何遍歷陣列中的陣列?
