2010-03-26 75 views
2

当我尝试读取像下面这样的JSON字符串时,它会进入无限循环。在Jquery中读取JSON字符串

<script language="javascript"> 
      $(document).ready(function() { 

       $("#Button1").click(function() { 
        var json = "[{'City':'Lucknow','ID':'1'},{'City':'Mumbai','ID':'2'}]"; 
        $.each(json, function() { 
         alert(this['City']); 
        }); 


      }); 
    </script> 

不知道我在做什么错?请帮助!

回答

5

使用jQuery.parseJSON解析JSON字符串使用jQuery:

var json = "[{'City':'Lucknow','ID':'1'},{'City':'Mumbai','ID':'2'}]"; 
$.each(jQuery.parseJSON(json), function() { 
    alert(this['City']); 
}); 

jQuery.parseJSON的优点是,它采用了原生实现JSON.parse如果它支持它的浏览器。


编辑,这是不工作可能是JSON时只允许用双引号声明字符串的问题。相应excerpt from the JSON specification

 string = quotation-mark *char quotation-mark 

    char = unescaped/
      escape (
       %x22/  ; " quotation mark U+0022 
       %x5C/  ; \ reverse solidus U+005C 
       %x2F/  ;/ solidus   U+002F 
       %x62/  ; b backspace  U+0008 
       %x66/  ; f form feed  U+000C 
       %x6E/  ; n line feed  U+000A 
       %x72/  ; r carriage return U+000D 
       %x74/  ; t tab    U+0009 
       %x75 4HEXDIG) ; uXXXX    U+XXXX 

    escape = %x5C    ; \ 

    quotation-mark = %x22  ; " 

    unescaped = %x20-21/%x23-5B/%x5D-10FFFF 

所以下面应该工作:

var json = '[{"City":"Lucknow","ID":"1"},{"City":"Mumbai","ID":"2"}]'; 
+0

感谢您的回复!即使这不起作用... – Bala 2010-03-26 15:45:32

+0

@Bala:哦,'jQuery.parseJSON'被添加到1.4.1中。也许你的jQuery版本不支持它。 – Gumbo 2010-03-26 15:47:27

+0

我使用jquery 1.4.1 – Bala 2010-03-26 15:55:55

0
$("#Button1").click(function() { 
    var json = $.parseJSON("[{'City':'Lucknow','ID':'1'},{'City':'Mumbai','ID':'2'}]"); 
    $.each(json, function() { 
    alert(this['City']); 
}); 

这是更好地使用json2.js来自:http://www.json.org/js.html

+0

伟大的!谢啦!有效!!!!!!! – Bala 2010-03-26 15:46:27

+0

var json =“[{'City':'Lucknow','ID':'1'},{'City':'Mumbai','ID':'2'}]”; (eval(json),function(){ alert(this ['City']); }); - 只有这样。 上面的代码与pasrJSON不起作用。我正在使用jquery 1.4.1 – Bala 2010-03-26 15:55:11