встройте синтаксис JSON в PHP

PHP был бы намного более прохладным, если Вы могли бы записать вещи как это:

$array = [2, 3, 5];

$object = { "name" : "Harry", "age" : 23, "cats" : ["fluffy", "mittens", "whiskers"]};

но, я просто провел много времени, ища расширение (даже экспериментальная альфа или что-либо) добавляющий json синтаксис к PHP, но ничего не нашел.

Чему-нибудь нравится, это существует?

В противном случае рассматривая существование json_decode () и XHP Facebook, было бы трудно записать расширение, чтобы сделать это?

У меня нет опыта при записи расширений PHP, хотя я сделал много C в колледже.

6
задан Bill 17 July 2010 в 23:03
поделиться

7 ответов

Вы можете просто обернуть свою структуру данных в json_decode и покончить с этим:

$array = json_decode('[2, 3, 5]');

$object = json_decode('{
                           "name" : "Harry",
                           "age" : 23,
                           "cats" : [
                                        "fluffy", "mittens", "whiskers"
                           ]
                       }');

Да, проверка типов не выполняется, пока оператор не будет выполнен, и вы получите небольшая проблема с обработкой нескольких кавычек, но вы всегда можете использовать для этого HEREDOC.

7
ответ дан 8 December 2019 в 13:43
поделиться

Другой синтаксис для массивов PHP предлагался и отклонялся много раз раньше.

К сожалению, я знаю, потому что я тоже ненавижу уродливый синтаксис .

5
ответ дан 8 December 2019 в 13:43
поделиться

Обновление: все нижеприведенное стало несколько спорным с PHP 5.4; теперь у нас есть синтаксис массива [..] .


Да, синтаксис массива PHP слишком многословен и уродлив, и мне тоже хотелось бы, чтобы он был более кратким.

Нет, вероятно, было бы не лучшим решением пытаться изменить это для существующих версий PHP, поскольку это функция, которую нужно будет встроить в анализатор. Это означает, что ваши PHP-приложения будут работать только на пользовательских скомпилированных версиях PHP, что делает ваше приложение намного менее переносимым и тем самым сводит на нет одно из хороших свойств PHP.

Вы можете попробовать что-то вроде компилятора, который преобразует ваш собственный синтаксис массива в обычный синтаксис перед запуском кода. Если вы зашли так далеко, возможно, лучше начать с совершенно другого языка.

Попробуйте лоббировать синтаксис, подобный Javascript, для PHP 6.x. А пока просто напишите array () . :)

4
ответ дан 8 December 2019 в 13:43
поделиться

Сочетание ассоциативных и численно индексированных массивов обычно довольно близко:

$object = array("name" => "Harry", "age" => 23, "cats" => array("fluffy", "mittens", "whiskers"));

В мое мнение (особенно из-за существования json_encode ) не имеет смысла писать прямой JSON поверх чего-то вроде вышеупомянутого.

0
ответ дан 8 December 2019 в 13:43
поделиться

Если вы хотите написать что-то, кроме PHP, используйте то, что не является PHP. В противном случае используйте array () .

$array = array(2, 3, 5);

$object = array('name' => 'Harry', 'age' => 23, 'cats' => array('fluffy', 'mittens', 'whiskers'));
1
ответ дан 8 December 2019 в 13:43
поделиться

php не обрабатывает json - вот почему он дает вам инструменты для кодирования / декодирования.

Если вы отчаянно пытаетесь «написать» таким образом, просто заключите его в кавычки:

$object = '{ "name" : "Harry", "age" : 23, "cats" : ["fluffy", "mittens", "whiskers"]}';

Что касается php, то «объект json» - это не что иное, как строка ...

0
ответ дан 8 December 2019 в 13:43
поделиться

Как уже было сказано выше, разные языки имеют разный синтаксис - если вам не нравится синтаксис PHP, вы можете рассмотреть другие языки.

JSON означает "javascript объектная нотация" - возможно, то, что вам нужно, это серверный javascript. Существует огромное количество вариантов серверного javascript - jsgi/jack (narwhal), ringojs, flusspferd, node.js, v8cgi и т.д. и т.п. http://wiki.commonjs.org/

0
ответ дан 8 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: