在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