JSON: JavaScript Object Notation

встала задача передачи многомерного массива из РНР в клиентский код. Сразу же в памяти всплыл замечательный JSON и пришлось его реализовать. Задача не из сложных, поэтому через 10минут появилось это:


/**
 * Преобразование матрицы ассоциативного массива в JSON
 * (JavaScript Object Notation)
 *
 * @param assoc_array $array
 * @return string JSON
 */
function composeJSON($array) {
	$json = "[";
	foreach ($array as $item) {
		$json .= " { ";
		foreach ($item as $key => $val) {
			if (is_array($val)) {
				$json .= $key.": ".composeJSON($val);
			} else {
				$json .= "{$key}: '{$val}',\\n";
			}
		}
		$json = substr($json, 0, -2);
		$json .= " } ,\\n";
	}
	$json = substr($json, 0, -2);
	$json .= " ]“;

	return $json;
}

И работает и все бы ничего, но. Оказывается что в PHP 5.2.0, который я удчно использую json_encode() и json_decode() присутствуют на уровне ядра :)
Вывод: читайте маны и changelog’и каждой версии софтины перед использованием . особенно это касается языков программирования…

З.Ы. Небольшая заметка. Встроенные функции РНР работают исключительно с UTF8 данными, так что не забудте их кодить в нужный формат ;)

Tags: , , ,

Также рекомендую к прочтению:

9 Responses to “JSON: JavaScript Object Notation”

  1. drumrock Says:

    Лучше всё-таки иметь свои велосипеды для замены самым свежим функциям. Дабы не напороться на места, где нет поддержки.

  2. drumrock Says:

    И ещё это… Сделал бы какую-нибудь систему форматирования кода отступами, а то некрасиво :-)

  3. Azazel Says:

    та уже подумывал над тем что б написать, но как-то как обычно руки не доходят ибо времени нет, а я и сегодня на работе сижу :)

  4. drumrock Says:

    А теперь видна прелесть макета с фиксированной шириной колонки :-) Думаю, надо посмотреть в сторону textarea для кода. Или же div’ы какие-то c overflow: auto;

  5. Azazel Says:

    не. фик с ним - красива :)

  6. BITCreator Says:

    а вот вы чем здесь занимаетесь… :)

  7. BITCreator Says:

    Забыл как функция называется, полез в блог смореть. Тока не надо кричать, что я маняг…

  8. cross Says:

    Первое, что пришло в голову, когда увидел этот заголовок - написать те две функции из мануала :)

  9. kovshenin Says:

    Да, хорошая функция… Спасибо :)

Leave a Reply

Введите следующие символы: