Pregunta

Necesito ayuda sobre este problema. Necesito agregar un objeto que abarque el hash de mi archivo JSON.

Utilizo el módulo de servicios en Drupal 6 para generar el archivo XML y JSON desde mis nodos. Entonces, cuando veo mis nodos en JSON, tengo esto:

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

Pero necesito que este archivo JSON se vea así:

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

¿Cómo cambiar este archivo JSON generado por el módulo de servicios?

¿Fue útil?

Solución

El JSON es generado por el RESTServerViewBuiltIn clase en el services/servers/rest_server/includes/rest_server.views.inc archivo, específicamente el render_json función miembro.

Los servicios proporcionan una forma de anular esto.

En primer lugar en un módulo personalizado implementando hook_rest_server_response_formatters_alter y cambie la clase de vista que se usa para convertir la salida a una personalizada:

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

Luego agregue su clase de vista personalizada (mantendría esto en el archivo del módulo para evitar tener que cargar incluye)::

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;
  }
}

Espero que ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top