2017-05-16 27 views
1

私は簡単な関数で観測可能に加入してい:Rxjs observable subscribe json、ルートパラメータ?

public MyGet() { 
    let results={}; 
    this.http.get("myfile.json").map(res => res.json()).subscribe(
      output => { 
      results=output.clients; // clients is the root of json file 
      }, 
      /* etc */ 

JSONファイル「myfile.json」です:

{ 
"clients" : [ 
    { "name":"X", 
     "age":"34" }, 
    { "name": "Y", 
     "age": "41" }, 
    /* etc */ 

私は、関数MyGetにおけるパラメータとして「クライアント」をしたいです:

public MyGet (json_root: any){ 
    let results={}; 
    this.http.get("myfile.json").map(res => res.json()).subscribe(
      output => { 
      results=output.HERE; // HERE = json_root 
      }, 
      /* etc */ 

だから私は、呼び出すことができます。

MyGet("clients") 

ここにjson_rootを書く方法がわかりません

+0

結果がどのように使用されるかわかりません。しかし、 'output.HERE'では' output [json_root] 'を実行できます。 – runit

+0

私の例はsemplificationですが、 "clients"は動作します。アイデアは、jsonファイルのルートをパラメータとして持つことです。私は出力[json_root]を試して、動作しません。 – Johannes

+0

よ、奇妙です。私はあなたがあなたの結果をどこに呼んだのか、それともどこに表示したのですか? – runit

答えて

2

あなたの機能を分割することができます。

public MyGet(): Observable<any>{ 
    return this._http.get("myfile.json").map(res => res.json()); 
    } 
    .... 
    private json_root: any; 

    public callAndSubscrive(json_key: string){ 
    this.MyGet().subscribe(output => {this.json_root = output[json_key]; console.log(output)}); 
    } 
+0

なぜですか?私の問題は、どの構文が機能するのか分かりません。この例でわかるように、 "clients"はjsonファイルのルートです。今私は静的な "output.clients"を持っていると私は動的なパラメータ "output.json_root"(json_rootは関数の呼び出しの "クライアント"です)が必要です。しかし、 "output.json_root"は機能しません。 MyGet(json_root:any)の定義では、 "unused parameter"と表示されています。 – Johannes

+0

わかりました。その場合、_output [json_root] _以上の人が何を言っているのでしょうか?しかし、console.logに出力とjson_rootを行い、出力とjson_rootが期待どおりであることを確認してください。出力が_var obj = {a: 'aa'、b: 'bb'} _のようなオブジェクトなら、_obj ['a'] _は値を取得するために正しいです。 – kimy82

+0

[json_root] works..iなぜ昨日はうまくいかなかったのか分かりませんが、構文は同じです。ありがとう!! – Johannes

関連する問題