2009-07-21 7 views
15

Не могли бы вы рассказать мне, что такое использование JSON (в Javascript и PHP). , когда нам нужен метод JSON.Где/когда мы используем JSON?

Я читал по следующей ссылке, но я не получил никакой информации о реализации JSON в любом проекте.

http://www.json.org/js.html

+3

должно быть сообщество вики – SilentGhost

+1

... если он WASN» t дубликат несколько раз – annakata

ответ

21

JSON это формат обмена данными легковесные (думаю о нем, как XML на диете). В принципе, в любом месте, где вы можете использовать XML для сериализации данных, вы можете использовать JSON.

3

JSON - это всего лишь формат данных. Если вам нужно хранить или переносить данные, которые не сложнее, чем вложенные пары пар имя-значение, значения которых поддерживаются стандартом JSON, тогда JSON может быть правильным форматом данных для вашего проекта.

Если ваш проект имел хранения данных/потребности в транспорте;)

8

Несмотря на свое название, один из основных видов использования формата JSON в AJAX веб-разработки (хотя, конечно, не только один). Это часто предпочтительнее традиционного XML для его легкого синтаксиса.

2

JSON - относительно легкий формат обмена данными (по крайней мере, по сравнению с XML или HTML) и наиболее полезен при обмене небольшими объемами данных между веб-клиентом и веб-сервером/службой.

Тем не менее, это не лучший выбор (хотя и намного лучше, чем XML) для обмена большими списками данных из-за его накладных расходов на одну строку обмена.

4

JSON - это формат данных, используемый при передаче данных. Он используется в основном в Javascript AJAX-вызовах.

Структура JSON представляет собой просто квадратное имя: пары значений. Из-за его компактности и простоты это лучшая структура для передачи относительно небольших наборов данных и вещей, которые могут быть сгруппированы в пары имя: значение.

Например:

Prototype.js Ajax вызова преобразования и приема данных в формате JSON:

my_prototype_class = Class.create(); 
my_prototype_class.prototype = { 
    initialize: function() { 
     this.myarray = new Array(); 
     //do initialization 
    },  
    my_function: function(direction){ 
     new Ajax.Request('/my/url.php', 
      {  
       method: 'post', 
       parameters: { name: value, 
           myarray_data: this.myarray.toJSON() }, 
       onSuccess: function(transport) { 
        var response = transport.responseText.evalJSON(); 
        //handle response 
       }, 
       onFailure: function(){ 
        //handle failure 
       }  
      }); 
    } 
} 
Event.observe(window, "load", function(){new my_prototype_class();}, false); 

И с помощью PHP вы обрабатывать запрос с чем-то вроде этого:

function my_php_handler() 
{ 
    #parse POST data 
    $name = $_POST["name"]; 
    $myarray_data = $_POST["myarray_data"]; 

    #transform the data in some way 

    #return encoded string 
    echo json_encode($results); 
} 

Что-то вроде:

[{"myarray": [], "name": value}] 

будет передан в HTTP-запросе/ответе. Данные в этом формате называются JSON.

1

JSON в основном используется как легкая и удобная для чтения альтернатива XML в веб-приложениях AJAX.

2

Я бы предложил использовать JSON, если вам нужно манипулировать извлеченными данными (т. Е. Через вызов Ajax в вашем браузере) с кодом JavaScript. В таком случае JSON очень удобен, так как вы можете напрямую загрузить его в свой JavaScript и использовать его (поэтому Java Script Object Notation => JSON). Это называется десериализацией строки JSON в объектах JavaScript. Это можно сделать, используя eval(), который, однако, я читаю, представляет некоторые проблемы безопасности, поэтому следует использовать некоторый сериализатор JSON (de).

Как описано на page вы упомянули вас есть некоторые JSON строка, как

{"bindings": [ 
     {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, 
     {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
     {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} 
    ] 
} 

который передается по сети, инициированный некоторым Ajax вызова на клиенте, где затем обратный вызов вызывается как (т.е. .Net)

function onSuccess(result){ 
    var myObj = Sys.Serialization.JavaScriptSerializer.deserialize(result, false); 
    myObj.bindings[0].ircEvent... 
} 

преимуществом является только легкий (де) сериализации вместе при использовании JavaScript, в основном на веб-разработки с Ajax. В противном случае я бы не использовал JSON, а скорее полагался на XML, поскольку для настольных приложений есть действительно мощные библиотеки разбора.

2

Все остальные ответы велики, но, возможно, самое простое объяснение для вашего конкретного случая (JavaScript + PHP): JSON - это самый простой способ перевести объект JavaScript в ассоциативный массив или объект PHP (и наоборот).).

Взгляните на json_encode() и json_decode() на PHP-сторону вещей. На стороне JavaScript простой eval() - это самый простой (но наименее безопасный!) Способ получить объект из строки JSON, но у вашей библиотеки выбора наверняка будут функции по уходу за этим для вас, и если вы ориентируетесь на более новые браузеры, вы можете использовать ECMAScript 5 JSON object.

3

JSON - отличный формат для передачи данных взад и вперед между Javascript и PHP. Мое наиболее распространенное использование - это сообщения о статусе.

Вот несколько Javascript для выполнения Ajax-запроса небольшого PHP-скрипта.

new Ajax.Request('dostuff.php', { 
     method: 'get', 
     parameters: {'param1': 'this is param 1'}, 
     onSuccess: function(response, jsonHeader){ 
      if(jsonHeader['status'] == 'Success'){ 
      //Everything is OK, do stuff 
      }else{ 
      alert(jsonHeader['status']); 
      } 
     }, 
     onFailure: function(){ 
      alert('Fail!'); 
     } 
    }); 

Затем, на стороне PHP, вы можете иметь что-то вроде этого:

$jsonHeader = array(); 

    if($_REQUEST['param1']) 
    { 
     echo '<p>You passed ' . $_REQUEST['param1'] . '</p>'; 
     $jsonHeader['status'] = 'Success'; 
    }else 
    { 
     $jsonHeader['status'] = 'Failed because the request was invalid'; 
    } 

    if(is_array($jsonHeader) and sizeof($jsonHeader) > 0) 
    { 
     header('X-JSON: (' . json_encode($jsonHeader) . ')'); 
    } 

Аккуратный то, что прототип автоматически декодирует заголовок X-JSON, что PHP является создание.

Конечным результатом является то, что jsonHeader аргумент OnSuccess метода в Javascript автоматически преобразуется в массив, что это одни и те же данные, что и массив $ jsonHeader в PHP

Смежные вопросы