2013-09-26 120 views
0

作爲我的WCF服務的一部分,我使用JavaScriptSerializer將SQL查詢結果作爲Json返回。我希望能夠提供JSON模式作爲輸出,並尋找關於如何實現這一點的一些反饋。用C生成JSON模式#

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); 
Dictionary<string, object> row = null; 

foreach (DataRow dr in dt.Rows) 
{ 
    row = new Dictionary<string, object>(); 
    foreach (DataColumn col in dt.Columns) 
    { 
     row.Add(col.ColumnName.Trim(), dr[col]); 
    } 
    rows.Add(row); 
} 
return serializer.Serialize(rows); 
+0

您想根據SQL查詢的結果自動生成JSON模式嗎?例如,如果您向SQL表添加新列,您希望立即將其反映到模式生成器的輸出中? –

+0

是的,那正是我正在尋找的。 – jay

回答

0

AFAIK這裏沒有內置的庫;然而,有幾個樣本(包括this one which I wrote)將JSON解析爲一個結構,然後將結構轉換爲JSON「模式」之後的一系列類。該算法的主要問題是在陣列「合併」對象,確保如果你有類似

[{"a":1,"b":2},{"a":3,"c":4}] 

這將產生與INT成員abc類。

示例中的文件JsonRoot.cs包含用於將JSON解析爲「架構」結構的大部分代碼。從那裏你可以將其導出爲你想要的任何格式(樣本本身將其導出爲C#或VB類)。