JSONファイルにオブジェクトを追加するサービスモジュールDrupalによって生成されます

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

  •  22-10-2019
  •  | 
  •  

質問

この問題について助けが必要です。 JSONファイルのハッシュを含むオブジェクトを追加する必要があります。

ノードからXMLおよびJSONファイルを生成するために、Drupal 6のサービスモジュールを使用しています。だから、私がJSONで私のノードを見るとき、私はこれを持っています:

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

しかし、私はこのJSONファイルが次のように見えることが必要です:

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

サービスモジュールによって生成されたこのJSONファイルを変更する方法は?

役に立ちましたか?

解決

JSONは、によって生成されます RESTServerViewBuiltIn クラス の中に services/servers/rest_server/includes/rest_server.views.inc ファイル、具体的には render_json メンバー関数。

サービスは、これをオーバーライドする方法を提供します。

まず、カスタムモジュールの実装で hook_rest_server_response_formatters_alter そして、出力をカスタムのものにするために使用されるビュークラスを変更します。

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