Где/когда мы используем JSON?
Не могли бы вы сказать мне, пожалуйста, в чем заключается использование JSON (в Javascript и PHP). когда нам нужен метод JSON.
Я прочитал по следующей ссылке, но я не получил никакой информации о реализации JSON ни в одном проекте.
9 answers
JSON - это облегченный формат обмена данными (думайте об этом как о XML на диете). В принципе, в любом месте, где вы можете использовать XML для сериализации данных, вы можете вместо этого использовать JSON.
Несмотря на свое название, одним из основных применений формата JSON является AJAX веб-разработка (хотя, конечно, не единственная). Он часто предпочтительнее традиционного XML из-за его легкого синтаксиса.
JSON - это формат данных, используемый при передаче данных. Он используется в основном в вызовах AJAX Javascript.
Структура 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.
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) . ')');
}
Самое приятное, что прототип автоматически декодирует заголовок X-JSON, который создает PHP.
Конечным результатом является то, что аргумент jsonHeader процесса onSuccess метод в Javascript автоматически преобразуется в массив, содержащий те же данные, что и массив $Jsonheader в PHP
JSON является относительно легким форматом обмена данными (по крайней мере, по сравнению с XML или HTML) и наиболее полезен при обмене небольшими объемами данных между веб-клиентом и веб-сервером/сервисом.
Однако это не лучший выбор (хотя и намного лучший, чем XML) для обмена большими списками данных из-за накладных расходов на обмен строками.
Я бы предложил использовать JSON, если у вас есть необходимость манипулировать полученными данными (т.Е. с помощью вызова Ajax в вашем браузере) с помощью кода JavaScript. В таком случае JSON очень удобен, так как вы можете напрямую загрузить его в свой JavaScript и использовать (поэтому обозначение объекта Java Script => JSON). Это называется десериализацией строки JSON в объектах JavaScript. Это можно сделать с помощью eval(), который, однако, - я читал - создает некоторые проблемы с безопасностью, поэтому некоторые JSON (de) следует использовать сериализатор.
Как описано на странице вы упомянули, что у вас есть строка 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, поскольку для настольных приложений существуют действительно мощные библиотеки синтаксического анализа.
Все остальные ответы великолепны, но, возможно, самое простое объяснение для вашего конкретного случая (JavaScript + PHP): JSON - это самый простой способ перевести объект JavaScript в ассоциативный массив PHP или объект (и наоборот).
Взгляните на json_encode() и json_decode() для PHP-стороны вещей. На стороне JavaScript простой eval() - это самый простой (но наименее безопасный!) способ получить объект из строки JSON, но ваша библиотека у choice, безусловно, будут функции, которые позаботятся об этом для вас, и если вы ориентируетесь на более новые браузеры, вы можете использовать объект JSON ECMAScript 5.
JSON в основном используется как легкая и более удобочитаемая альтернатива XML в веб-приложениях AJAX.