Другое различие между Java и C++, то, что в C++, иерархии пространства имен не нужно Маху расположение файловой системы. Таким образом, я склонен помещать всю допускающую повторное использование библиотеку в единое пространство имен и подсистемы в библиотеке в подкаталогах:
#include "lib/module1.h"
#include "lib/module2.h"
lib::class1 *v = new lib::class1();
я только поместил бы подсистемы во вложенные пространства имен, если бы была возможность конфликта имен.
JSON - это способ обмена данными (обычно между браузером и сервером).
JavaScript позволяет двумя способами хранить коллекции значений:
//arrays:
[value, value, value]
//objects:
{key:value, key:value, key:value}
В какой-то момент гуру известный как Дуг понял, что обычно наиболее эффективно отправлять данные в JavaScript, уже настроенный как объект. [Вместо того, чтобы PHP отправлял строки с разделителями-запятыми, пост-данные, XML или даже HTML, все из которых должны быть тщательно проанализированы с помощью JavaScript].
Он назвал эту идею JSON, написал для нее спецификацию , и появился стандарт.
Например, предположим, что ваш сценарий login.php должен возвращать имя пользователя, общее количество сообщений и количество дней с момента регистрации:
//XML
"<xml..><details>\
<user>Jim</user><posts>239</posts><since>Jan09</since>\
</details>"
//POSTData
"user=Jim&posts=239&since=Jan09"
//JSON
"{user:'Jim', posts:239, since:'Jan09'}"
Последний из них можно легко проанализировать с помощью JS (используя eval
), и детали можно использовать интуитивно:
var user = details.user;
РЕДАКТИРОВАТЬ:
Правильно было отмечено, что для правильного JSON,
Это было сделано для того, чтобы JS не хрипел по зарезервированным ключевым словам (в JS нельзя использовать определенные слова, такие как class
, если они не указаны в кавычках. Итак, {class: 'mike'}
не может использоваться).
Также следует отметить, что PHP 5.2+ имеет функции, которые можно использовать для создания или анализа JSON:
<?php
$arr = array ('a'=>'ay','b'=>'bee','c'=>'cee');
echo json_encode($arr); //outputs {"a":"ay","b":"bee","c":"cee"}
?>
Функция json_ decode
будет работать ТОЛЬКО, если JSON действителен, поэтому иногда важно правильно заключить эти двойные кавычки.
По сути, это способ описания объектов в тексте - текстовый формат сериализации. Однако прелесть этого в том, что это также обычный JavaScript. Синтаксис JavaScript позволяет инициализировать объекты в довольно кратком формате, и этот формат довольно легко сгенерировать / проанализировать и на других языках.
Таким образом, вы получаете «встроенную» десериализацию в JavaScript (т.е. вы можете просто интерпретировать текст как код 1 ) без дополнительных библиотек, и другие платформы могут создавать его, обычно с помощью библиотеки. (Обычно веб-сервер генерирует JSON для интерпретации браузером.)
1 Конечно, предполагается, что вы полностью доверяете своему источнику данных - выполнение произвольного текста в виде кода довольно опасно с точки зрения безопасности.
JSON - это исходный код Javascript, который объявляет структуру данных, обычно отправляемую веб-сервером в браузер. Браузер запускает код через обычный синтаксический анализатор javascript, и выскакивает структура данных.
Объявление Javascript может выглядеть так:
var myvar = {"column1": "valuie1"};
^^^^^^^^^^^^^^^^^^^^^^
Часть, подчеркнутая ^^^, стала известной как JSON.
Вначале какой-то Javascript мог захватить текст с сервера и проанализировать его следующим образом:
var myvar = eval('(' + textfromserver + ')');
Поскольку eval опасен, в настоящее время его чаще используют, например:
var myObject = JSON.parse(myJSONtext);
Это хак, который так много людей сочли полезным, что сделали его стандарт. См. эту страницу википедии для более подробного объяснения.
JSON - это исходный код Javascript, который создает структуру данных.
Я постараюсь сделать это проще. Если вы хоть немного знакомы с XML, то в принципе он похож на XML в том смысле, что хранит данные в удобном для чтения виде как для людей, так и для программ. Он обозначен как «формат обмена данными», потому что вы увидите, что он используется в качестве посредника для перемещения данных между одной программой и другой.
Например, у вас может быть определенная база данных, из которой вы хотите, чтобы другие брали информацию и использовали ее. в собственной программе. Вместо того, чтобы предоставлять им полный доступ к базе данных, вы можете ограничить их доступ, написав какой-то слой JSON. После этого люди могут получить доступ к JSON так же, как через RSS-канал. Пример из жизни: Yahoo предоставляет уровень JSON для своей поисковой системы, чтобы люди могли писать виджеты рабочего стола (или что-то еще), которые могут запускать поиск в Yahoo и получать результаты, отправляемые непосредственно на виджеты рабочего стола.
Уродливая альтернатива использованию чего-то вроде JSON может быть ваша программа получает HTML-содержимое веб-страницы и каким-то образом находит нужную вам информацию. (А если HTML-макет веб-сайта изменится, вам придется изменить свою программу.)