PHP был бы намного более прохладным, если Вы могли бы записать вещи как это:
$array = [2, 3, 5];
$object = { "name" : "Harry", "age" : 23, "cats" : ["fluffy", "mittens", "whiskers"]};
но, я просто провел много времени, ища расширение (даже экспериментальная альфа или что-либо) добавляющий json синтаксис к PHP, но ничего не нашел.
Чему-нибудь нравится, это существует?
В противном случае рассматривая существование json_decode () и XHP Facebook, было бы трудно записать расширение, чтобы сделать это?
У меня нет опыта при записи расширений PHP, хотя я сделал много C в колледже.
Вы можете просто обернуть свою структуру данных в json_decode и покончить с этим:
$array = json_decode('[2, 3, 5]');
$object = json_decode('{
"name" : "Harry",
"age" : 23,
"cats" : [
"fluffy", "mittens", "whiskers"
]
}');
Да, проверка типов не выполняется, пока оператор не будет выполнен, и вы получите небольшая проблема с обработкой нескольких кавычек, но вы всегда можете использовать для этого HEREDOC.
Другой синтаксис для массивов PHP предлагался и отклонялся много раз раньше.
К сожалению, я знаю, потому что я тоже ненавижу уродливый синтаксис .
Обновление: все нижеприведенное стало несколько спорным с PHP 5.4; теперь у нас есть синтаксис массива [..]
.
Да, синтаксис массива PHP слишком многословен и уродлив, и мне тоже хотелось бы, чтобы он был более кратким.
Нет, вероятно, было бы не лучшим решением пытаться изменить это для существующих версий PHP, поскольку это функция, которую нужно будет встроить в анализатор. Это означает, что ваши PHP-приложения будут работать только на пользовательских скомпилированных версиях PHP, что делает ваше приложение намного менее переносимым и тем самым сводит на нет одно из хороших свойств PHP.
Вы можете попробовать что-то вроде компилятора, который преобразует ваш собственный синтаксис массива в обычный синтаксис перед запуском кода. Если вы зашли так далеко, возможно, лучше начать с совершенно другого языка.
Попробуйте лоббировать синтаксис, подобный Javascript, для PHP 6.x. А пока просто напишите array ()
. :)
Сочетание ассоциативных и численно индексированных массивов обычно довольно близко:
$object = array("name" => "Harry", "age" => 23, "cats" => array("fluffy", "mittens", "whiskers"));
В мое мнение (особенно из-за существования json_encode
) не имеет смысла писать прямой JSON поверх чего-то вроде вышеупомянутого.
Если вы хотите написать что-то, кроме PHP, используйте то, что не является PHP. В противном случае используйте array ()
.
$array = array(2, 3, 5);
$object = array('name' => 'Harry', 'age' => 23, 'cats' => array('fluffy', 'mittens', 'whiskers'));
php не обрабатывает json - вот почему он дает вам инструменты для кодирования / декодирования.
Если вы отчаянно пытаетесь «написать» таким образом, просто заключите его в кавычки:
$object = '{ "name" : "Harry", "age" : 23, "cats" : ["fluffy", "mittens", "whiskers"]}';
Что касается php, то «объект json» - это не что иное, как строка ...
Как уже было сказано выше, разные языки имеют разный синтаксис - если вам не нравится синтаксис PHP, вы можете рассмотреть другие языки.
JSON означает "javascript объектная нотация" - возможно, то, что вам нужно, это серверный javascript. Существует огромное количество вариантов серверного javascript - jsgi/jack (narwhal), ringojs, flusspferd, node.js, v8cgi и т.д. и т.п. http://wiki.commonjs.org/