JSON - это облегченный формат обмена данными (воспринимайте его как XML на диете). Практически везде, где вы можете использовать XML для сериализации данных, вы можете вместо этого использовать JSON.
Несмотря на название, одним из основных применений формата JSON является веб-разработка AJAX (хотя, конечно, не единственная). Его часто предпочитают традиционному XML из-за его легкого синтаксиса.
JSON - это формат данных, используемый при передаче данных. Он используется в основном в вызовах Javascript AJAX.
Структура JSON представляет собой просто заключенные в квадратные скобки пары имя: значение. Благодаря своей компактности и простоте это лучшая структура для передачи относительно небольших наборов данных и вещей, которые можно сгруппировать в пары имя: значение.
Например:
Ajax-вызов prototype.js, преобразующий и получающий данные 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.
JSON - это просто формат данных. Если вам нужно хранить или транспортировать данные, которые не сложнее, чем вложенная серия пар имя-значение, значения которых поддерживаются стандартом JSON, то JSON может быть правильным форматом данных для вашего проекта.
Если ваш проект требовалось хранение / транспортировка данных;)
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) . ')');
}
Отличная штука этот Prototype автоматически декодирует заголовок X-JSON, создаваемый PHP.
Конечным результатом является то, что аргумент jsonHeader метода onSuccess в Javascript автоматически преобразуется в массив, который '
JSON - это относительно легкий формат обмена данными (по крайней мере, по сравнению с XML или HTML), который наиболее полезен при обмене небольшими объемами данных между веб-клиентом и веб-сервером / службой.
Однако это не лучший выбор (хотя и намного лучше, чем XML) для обмена большими списками данных из-за накладных расходов на каждую передаваемую строку.
Я бы посоветовал использовать JSON, если вам нужно манипулировать полученными данными (например, посредством вызова Ajax в вашем браузере) с помощью кода JavaScript. В таком случае JSON очень удобен, поскольку вы можете напрямую загрузить его в свой JavaScript и использовать его (следовательно, Java Script Object Notation => JSON). Это называется десериализацией строки JSON в объектах JavaScript. Это можно сделать с помощью eval (), что, однако, - я читал - создает некоторые проблемы с безопасностью, поэтому следует использовать некоторый сериализатор JSON (де).
Как описано на странице , вы упомянули, что у вас есть строка JSON, такая как
{"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
}
, которая отправляется по сети, инициированная некоторым вызовом Ajax на клиенте, где затем вызывается обратный вызов, например (т. in .Net)
function onSuccess(result){
var myObj = Sys.Serialization.JavaScriptSerializer.deserialize(result, false);
myObj.bindings[0].ircEvent...
}
Преимущество заключается в простой (де) сериализации вместе при использовании JavaScript, в основном при веб-разработке с Ajax. В противном случае я бы не стал использовать JSON, а скорее полагался бы на XML, поскольку для настольных приложений существуют действительно мощные библиотеки синтаксического анализа.
Все остальные ответы хороши, но, возможно, самое простое объяснение для вашего конкретного случая (JavaScript + PHP): JSON - это самый простой способ преобразовать объект JavaScript в ассоциативный массив или объект (и наоборот) .
Взгляните на json_encode () и json_decode () для PHP-стороны. На стороне JavaScript простой eval () - это самый простой (но наименее безопасный!) Способ получить объект из строки JSON, но в вашей выбранной библиотеке обязательно будут функции, которые позаботятся об этом за вас, и если если вы ориентируетесь на новые браузеры, вы можете использовать объект JSON ECMAScript 5 .
JSON в основном используется как легкая и более удобочитаемая альтернатива XML в веб-приложениях AJAX.