Intereting Posts
Попытка ввода данных в таблицу SQL с использованием PHP / Html из регистрационной формы PHP / PDO MySQL отключает соединение, если пользовательская функция используется в длинном запросе Обратный массив в php DOMDocument для разбора HTML (вместо регулярного выражения) Регулярное выражение PHP. Как получить массив совпадений? API Opencart: проблема с сеансом app_id (как получить api_id) Отображение изображений из папки с помощью PHP Форматирование строки даты – PHP Codeigniter ActiveRecord: присоединиться к обратному обращению autocomplete показывает все записи, не делает никакого поиска Недопустимое исключение аргумента при генерации объектов из существующей базы данных не может добавлять данные в jqGrid из php в формате json Когда следует использовать подготовленные заявления? PHP MYSQL: способ отображения таблицы в порядке возрастания Как отобразить первую букву как прописную букву?

Как генерировать json-ответ, используя php

Как генерировать json-ответ, используя php

В модели:

public function groups($getGroupId) { $cols = array('group_id','name'); $sql = $this->select () ->from ( $this->_name, $cols ) ->where ( 'parent_id=?', $getGroupId ); $groupDetails = $this->fetchAll ( $sql ); //$childGroupName = $groupDetails['name']; return $groupDetails; } 

groupDetails.php страница:

 $dbGroup = new dbGroups(); $groupDetails = $dbGroup -> groups($getGroupId); $jsonResponse = json_encode($groupDetails); print_r($jsonResponse); 

При печати данных я получаю ответ вроде этого

 [{"group_id":"2","name":"ABCD"},{"group_id":"7","name":"XYZ"}] 

Но я хочу, чтобы результат был таким, потому что я должен генерировать jstree, используя json

 [ { "data" : { "icon" : <optional>, "title" : <node name> }, "attr" : { "rel" : <the type you defined in the js (maybe "group")>, "title" : <node title>, "id" : <the node's id / group id> }, "state" : "closed" } ] 

Поскольку вы используете Zend Framework, я рекомендую вам использовать Zend_Json . Zend_Json – довольно полезный компонент для форматирования Json из любого поддерживаемого формата (объект, массив, xml …).

Zend_Json::decode() и Zend_Json::encode() позволят вам кодировать и декодировать Json и prettyPrint() чтобы сделать ваш вывод более красивым.


Edit: Как сказал Svish, ваши два примера не похожи друг на друга, поэтому трудно догадаться, что вы хотите поместить в свое дерево.

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

Например, предположим, что вы хотите получить только одну строку из своей базы данных в своем дереве, тогда ваш массив будет примерно таким:

 $v = array( array( "data" => array("icon" => "ICON", "title" => $row->name), "attr" => array("rel" => "REL", "title" => "TITLE", "id" => $row->group_id), "state" => "closed")); echo Zend_Json::encode($v); 

Эти строки должны повторять что-то вроде ваших примеров.

Чтобы он работал с вашим fetchAll() , это сделает простой foreach .

Я бы рекомендовал вам использовать вывод из json_encode как есть. Снижает пропускную способность. Единственная причина, по которой я вижу все пробелы, – это отладка, и для этого я предпочел бы использовать FireBug и / или JSONView в FireFox.

В любом случае, если вы действительно этого хотите, вы можете попробовать флаг JSON_PRETTY_PRINT ? Кажется, это было добавлено в 5.4.0, хотя, возможно, не версия, которую вы поддерживаете … Кажется, есть варианты, которые вы можете использовать для них в комментариях. Может быть, вы можете найти что-то полезное? http://www.php.net/manual/en/function.json-encode.php#102091


Вы говорите, что теперь вам нужно создать jstree, и это действительно не имеет никакого отношения к тому, что вы просите. Вы два примера данных не похожи ни на что. json_encode не делает ничего особенного или волшебства. Он просто берет данные и превращает их в JSON. Это ваша задача, чтобы эти данные выглядели правильно, прежде чем кодировать их. Ваш запрос БД, скорее всего, возвращает набор плоских строк, и вам придется пройти через него и каким-то образом генерировать дерево так, как вы этого хотите. Вероятно, вы можете найти другие вопросы о том, как создавать древовидные структуры из результатов плоских БД.