Чтение строки JSON в Jquery - PullRequest
       5

Чтение строки JSON в Jquery

2 голосов
/ 26 марта 2010

Когда я пытаюсь прочитать строку 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>

Не уверен, что я делаю не так? Пожалуйста, помогите!

Ответы [ 2 ]

5 голосов
/ 26 марта 2010

Используйте 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 позволяет объявлять строки только в двойных кавычках. Соответствующая выдержка из спецификации JSON :

     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 голосов
/ 26 марта 2010
$("#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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...