Javascript jQuery.parseJSON无法解析序列化的C#字典
我正在用它把一本C#字典连载。 C#字典被序列化为字符串。Javascript jQuery.parseJSON无法解析序列化的C#字典,javascript,jquery,json,serialization,Javascript,Jquery,Json,Serialization,我正在用它把一本C#字典连载。 C#字典被序列化为字符串。 @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ElementDivIDs))的工作方式非常出色。这是我得到的输出: var jsonString = {"9":["ele9-tabs-attr9","ele9-tabs-attr48"],"10":["ele10-tabs-attr10"],"11":["ele11-tab
@Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ElementDivIDs))
的工作方式非常出色。这是我得到的输出:
var jsonString = {"9":["ele9-tabs-attr9","ele9-tabs-attr48"],"10":["ele10-tabs-attr10"],"11":["ele11-tabs-attr11"],"12":["ele12-tabs-attr12","ele12-tabs-attr49"],"13":["ele13-tabs-attr13"],"14":["ele14-tabs-attr14"]}
我想将其转换为Javascript关联数组。
但是对jquery.parseJSON的调用返回NULL
var dictionaryOfOtherDivs=jQuery.parseJSON(jsonString)代码>
字典yofotherdivs
在此之后为空
这是我的密码:
<script type="text/javascript">
$(document).ready(function () {
var jsonString = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ElementDivIDs))
console.log(jsonString);
var dictionaryOfOtherDivs = jQuery.parseJSON( jsonString );
for(var dictKey in dictionaryOfOtherDivs)
{
console.log("key = " + dictKey + ", value = " + dictionaryOfOtherDivs[dictKey]);
}
//Do some more things
});
</script>
$(文档).ready(函数(){
var jsonString=@Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ElementDivIDs))
log(jsonString);
var dictionaryOfOtherDivs=jQuery.parseJSON(jsonString);
for(字典中的var dictKey FOTHERDIVS)
{
log(“key=“+dictKey+”,value=“+dictionaryOfOtherDivs[dictKey]);
}
//多做一些事情
});
这不是JSON字符串;这是一个普通的对象文本
您不需要解析它。jQuery.parseJSON
获取一个字符串并输出一个对象。但是,您决定将JSON本身直接注入到脚本中,因此JavaScript引擎已经将其解析为对象文本,就好像您已经将整个内容作为常规代码编写一样
简单地说,您已经有了一个已解析的对象文本,不再需要进行任何解析。谢谢。我认为JavaScriptSerializer.Serialize()
返回一个字符串,而不是一个对象文本。我刚刚测试过,我可以使用for-in循环访问键和值,还可以使用jsonString[keyName]
访问指定值,谢谢Mattias的解释。接受SLaks的答案,因为它是第一个。