在Javascript中阅读C#字典

我在C#(ASP.NET)中有一个字典变量。 我想将此数据发送到Javascript。 我正在使用此代码序列化它并发送到javascript。

Dictionary chat; chat = new Dictionary(); chat.Add("Sam", "How are you?"); chat.Add("Rita", "I am good"); var serialize = new System.Web.Script.Serialization.JavaScriptSerializer(); Response.Write(serialize.Serialize(chat)); 

在Javascript页面上,我使用这个调用此页面;

  $.ajax({ url: "TextChatCalls/getChat.aspx", type: "POST", context: document.body, success: function (response) { var Chats = response.split('\n')[0]; alert(Chats); } }); 

Chats var中的值是{"Sam":"How are you?","Rita":"I am good"}

我不知道怎么在Chats中读取这个值。 我可以无论如何将其转换为2D数组并将其读取为数组[0] [0],数组[1] [0]等?

谢谢。

编辑:另一个困惑是,从ASP.NET返回的响应对象包含

 {"Sam":"How are you?","Rita":"I am good"}      

而不只是{"Sam":"How are you?","Rita":"I am good"}如预期的那样。 因此我必须通过var Chats = response.split('\n')[0];拆分响应对象var Chats = response.split('\n')[0]; 这使它成为一个字符串!

你看起来像这样:

 alert(Chats["Sam"]); 

(就像C#字典:-)。 你使用像Chats["propertyName"]这样的东西读/写它

或者,遍历每个值:

 for (var c in Chats) { if (Chats.hasOwnProperty(c)) { alert(c + ' ' + Chats[c]); } } 

请注意,这与C#不同。 在C#中, c将包含一个包含键和值的KeyValuePair<> 。 在Javascript中c只是关键,要获得你必须使用Chats[c]

hasOwnProperty的推理在这里http://yuiblog.com/blog/2006/09/26/for-in-intrigue/ )

现在……如果你真的想拆分它:

 var array = []; for (var c in Chats) { if (Chats.hasOwnProperty(c)) { array.push([c, Chats[c]]); } } 

只需将数据类型json添加到您的ajax请求中即可

 $.ajax({ url: "TextChatCalls/getChat.aspx", type: "POST", dataType: "json" context: document.body, success: function (response) { // do something with response }); 

这将使response成为您可以像这样访问的javascript对象

 alert(response["sam"]) //How are you? 

将其拆分为二维数组就可以了

 var Chats = []; for ( k in response ){ Chats[Chats.length] = [k, response[k]]; } 

我想这里重要的一点是你正确理解了JavaScript客户端上发生了什么。 到达JavaScript客户端的数据类型是JSON字符串。 JSON(= JavaScript Object Notation)可以直接由JavaScript解释。

JavaScript对象如下所示:

 var anObject = { name: "Sam", surname: "abc"}; 

您可以通过类似于字典的方式访问JavaScript对象的属性

 anObject["name"] //will get "Sam" 

或直接(财产符号)

 anObject.name 

相反,类似的JSON字符串看起来像

 var aJsonString = '{ "name": "Sam", "surname": "abc"}' 

现在要将JSON字符串转换为JavaScript对象,您需要解析它。 jQuery已经为你做了这个,否则你可以调用JSON.parse(aJsonString) ,你将得到一个有效的JavaScript对象。

在这里我做了一个简单的例子: http : //jsbin.com/adejev/2/edit