Agregar objeto en el archivo JSON generado por el módulo de servicios Drupal
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?
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