2009-04-17 7 views
3

Je souhaite désérialiser la chaîne JSON ci-dessous, en utilisant jQuery chaque fonction, mais l'élément n'est pas défini.ASP.NET + jQuery, comment désérialiser JSON?

le code ci-dessous, mais, dans le cas où j'utilise le service Web asp.net 2.0 + et remplissez le DataTable et passez à la classe System.Web.Script.Serialization.JavaScriptSerializer et renvoyez cette chaîne 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> 

Répondre

1

Avez-vous essayé d'utiliser la méthode de Sys.Serialization.JavaScriptSerializer de ASP.NET deserialize?

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

En variante, il est json_parse

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

Cette méthode traite un texte JSON pour produire un objet ou un tableau. Il peut lancer une exception SyntaxError.

Le paramètre optionnel reviver est une fonction qui peut filtrer et transformer les résultats. Il reçoit chacune des clés et des valeurs, et sa valeur de retour est utilisée à la place de la valeur d'origine. Si elle renvoie ce qu'elle a reçu, la structure n'est pas modifiée. Si elle renvoie indéfini, le membre est supprimé.

Working Example here. Voici le code

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

Il suffit d'utiliser la méthode intégrée eval JavaScript:

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

Soit dit en passant, vous n'avez pas besoin d'utiliser le signe $ pour les variables en JavaScript.