【问题标题】:jQuery.parseJSON fails to parse serialised C# dictionaryjQuery.parseJSON 无法解析序列化的 C# 字典
【发布时间】:2012-05-31 13:07:13
【问题描述】:

我正在使用this tutorial 序列化 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-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 );

dictionaryOfOtherDivs 在此之后为空。

这是我的代码:

<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>

【问题讨论】:

    标签: javascript jquery json serialization


    【解决方案1】:

    这不是 JSON 字符串;这是一个普通的对象字面量。

    你不需要解析它。

    【讨论】:

    • 谢谢。我认为 JavaScriptSerializer.Serialize() 返回一个字符串而不是一个对象文字。刚才测试了一下,可以使用for-in循环来访问key和value,也可以使用jsonString[keyName]访问指定值
    【解决方案2】:

    jQuery.parseJSON 接受一个 string 并输出一个 object。但是,您决定将 JSON 本身直接注入到脚本中,因此 JavaScript 引擎已经将其解析为对象字面量,就好像您自己将整个内容编写为常规代码一样。

    简单地说,你已经有了一个解析过的对象字面量,你不需要再做任何解析了。

    【讨论】:

    • 感谢马蒂亚斯的解释。接受 SLaks 的回答,因为它是第一个。
    猜你喜欢
    • 2011-12-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2017-05-17
    • 1970-01-01
    相关资源
    最近更新 更多