3

このチュートリアルを使用して、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この後はnullです。

これが私のコードです:

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

2 に答える 2

6

これはJSON文字列ではありません。これは通常のオブジェクトリテラルです。

解析する必要はありません。

于 2012-05-31T13:09:37.973 に答える
2

jQuery.parseJSON文字列を受け取り、オブジェクトを出力します。ただし、JSON自体をスクリプトに直接挿入することにしたため、JavaScriptエンジンは、JSON全体を通常のコードとして自分で記述したかのように、すでにオブジェクトリテラルに解析しています。

簡単に言えば、すでに解析済みのオブジェクトリテラルがあり、解析を行う必要はありません。

于 2012-05-31T13:11:24.363 に答える