2016-09-05 35 views
0

我是C#和ASP.NET的初學者,但是我有一些疑問。轉換字典C中的JSON#

它有一個序列化的詞典闕被存儲在數據庫中有:

var json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(filters.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString())); 

後系列化這本字典是存儲在數據庫中,因爲我會在一個視圖中使用的信息(彈出在asp.net )。

我的困難是反序列化數據庫中的這些值,將它們放回到字典中。我想:

代碼用於獲取數據庫中的信息:

<asp:Literal ID="lblFilter" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "FilterJson")%> ' /> 

我去收集代碼信息的唯一途徑其後的是:

object filter = new System.Web.Script.Serialization.JavaScriptSerializer().DeserializeObject(((Literal)e.Item.FindControl("lblFilter")).Text); 

不過,我可以不用迭代,甚至不用Dictionary。隨着字典用下面的代碼:

System.Collections.Generic.Dictionary<string, string> filters = new System.Collections.Generic.Dictionary<string, string>(); 

這是當我需要.Add一個在我的字典keyvalue不僅連鎖我有一個偉大的什麼是價值闕沒有得到Literal

((Literal)e.Item.FindControl("lblFilter")).Text 

我怎樣才能正確轉換?謝謝。

+0

是否可以更改服務器代碼?你可能會更好的二進制格式併發送它。 – Keddy1201

回答

1

反序列化JSON字符串,你可以很容易地使用下面的代碼:

Dictionary<object, object> filters = new JavaScriptSerializer().Deserialize<Dictionary<object, object>>(yourJSONString); 

你必須使用object代替string,因爲如果你在你的JSON字符串有一個列表,你會得到一個錯誤。

+0

我相信這也是工作的方式。謝謝! –

0

已解決:

我使用了框架Json.NET,無論在項目中包什麼。

using Newtonsoft.Json; 

獲取的.aspx值:

string serialize = @"" + ((Literal)e.Item.FindControl("lblFilter")).Text 

反序列化我使用的代碼波紋管:

Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(serialize); 

觀察值:所述JsonConvert方法屬於導入包。