【问题标题】:ASP.NET+jQuery, how to deSerialize JSON?ASP.NET+jQuery,如何反序列化 JSON?
【发布时间】:2009-04-17 07:34:33
【问题描述】:

我想反序列化下面的 JSON 字符串,使用 jQuery 每个函数, 但该项目未定义。

下面有代码,但是,如果我使用 asp.net 2.0 + Web 服务并填充 DataTable 并传递给 System.Web.Script.Serialization.JavaScriptSerializer 类并返回这些 JSON 字符串。

<html>
<head>
    <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var $strJson = '[';
            $strJson += '{"Code":"a","Name":"Sam","Country":"US"},';
            $strJson += '{"Code":"b","Name":"John","Country":"CN"},';
            $strJson += '{"Code":"c","Name":"Mary","Country":"TW"}';
            $strJson += ']';
            $.each($strJson, function (key, item) {
                alert(item);
                if (key == 0) return false; //Prevent infinity loop
            });
        });
    </script>
</head>
<body>
</body>
</html>

【问题讨论】:

    标签: jquery


    【解决方案1】:

    只需使用内置的 JavaScript eval 方法:

    $.each(eval('(' + $strJson + ')'), function(key, item) {
    

    顺便说一句,您不需要在 JavaScript 中对变量使用 $ 符号。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 ASP.NET 的 Sys.Serialization.JavaScriptSerializer 的 deserialize 方法?

      var result = Sys.Serialization.JavaScriptSerializer.deserialize($strJson);
      

      或者,还有json_parse

      var result = json_parse($strJson, [reviver])
      

      此方法解析 JSON 文本以生成对象或数组。 它可以抛出一个 SyntaxError 异常。

      可选的 reviver 参数是一个函数,可以 过滤和转换结果。它接收每个键和值, 并且使用它的返回值代替原始值。 如果它返回它收到的内容,那么结构不是 修改的。如果返回 undefined 则删除该成员。

      Working Example here。这是代码

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
      <script src="http://www.json.org/json_parse.js"></script>
      <script type="text/javascript">
            $(function() {
      
                  var $strJson =  '[';
                  $strJson +=  '{"Code":"a","Name":"Sam","Country":"US"},';
                  $strJson +=  '{"Code":"b","Name":"John","Country":"CN"},';
                  $strJson +=  '{"Code":"c","Name":"Mary","Country":"TW"}';
                  $strJson +=  ']';
      
                  var result = json_parse($strJson);
      
                  $.each(result, function(key, item) {
                   alert("Code: " + item.Code + " ,Name: " + item.Name + " ,Country: " + item.Country);
                   //Taken the following out as it prevents objects after the first from being "alerted"
                   //if ( key == 0) return false; //Prevent infinity loop
                   });
            });
      </script>
      <title>Sandbox</title>
      <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
      </head>
      <body>
          <p>Example Page</p>
      </body>
      </html>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-27
        • 1970-01-01
        • 2011-01-07
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        • 1970-01-01
        相关资源
        最近更新 更多