Добавить объект в файл json генерировать модуль служб Drupal

drupal.stackexchange https://drupal.stackexchange.com/questions/20675

  •  22-10-2019
  •  | 
  •  

Вопрос

Мне нужна помощь в этой проблеме. Мне нужно добавить объект, который охватывает хэш моего файла JSON.

Я использую модуль Services в Drupal 6 для генерации файла XML и JSON из моих узлов. Итак, когда я смотрю свои узлы в JSON, у меня есть это:

[
{
"nid": "7",
"vid": "7",
"type": "page",
"language": "",
"title": "Bievenido", ..... } ]

Но мне нужно, чтобы этот файл JSON выглядел так:

[
{
"<whatever>": {
    "nid": "7",
    "vid": "7",
    "type": "page",
    "language": "",
    "title": "Bievenido", .....  } ]

Как изменить этот файл JSON, сгенерированный модулем Services?

Это было полезно?

Решение

JSON генерируется RESTServerViewBuiltIn учебный класс в services/servers/rest_server/includes/rest_server.views.inc файл, в частности render_json функция члена.

Услуги действительно предоставляют способ переопределить это.

Во -первых, в реализации пользовательского модуля hook_rest_server_response_formatters_alter и измените класс View, который используется для визуализации вывода на пользовательский:

function MYMODULE_rest_server_response_formatters_alter(&$formatters) {
  $formatters['json']['view'] = 'RESTServerViewMYMODULE';
}

Затем добавьте свой класс пользовательского представления (я бы оставил это в файле модуля, чтобы избежать необходимости загрузки, включает в себя):

class RESTServerViewMYMODULE extends RESTServerView {
  public function render() {
    $new_data = new stdClass;
    $new_data->some_key = $this->model;

    $json = str_replace('\\/', '/', json_encode($new_data));

    return $json;
  }
}

надеюсь, это поможет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top