【问题标题】:Rxjs observable subscribe json, root parameter?Rxjs可观察订阅json,根参数?
【发布时间】:2017-05-16 09:05:36
【问题描述】:

我有一个简单的订阅 observable 的函数:

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")

我不明白如何在 HERE 中编写 json_root

【问题讨论】:

  • 我不太明白如何使用结果。但是对于output.HERE,您可以使用output[json_root]
  • 我的例子是一个简化,但使用“客户”确实有效。这个想法是将json文件的根作为参数。我试过输出[json_root],不行。
  • 好的,很奇怪。我的意思是你在哪里调用你的结果或者你在哪里显示它?
  • 这不是重点,解释起来很复杂,我无法改变这个结构。关键是静态“output.clients”确实有效,动态参数“output.json_root”无效。我不明白我必须使用哪种语法,“输出。?”
  • 好吧,这很奇怪, output[json_root] 应该可以工作,看这里:jsfiddle.net/ftb33mv0/1

标签: json rxjs observable subscribe


【解决方案1】:

你可以拆分你的功能。

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

【讨论】:

  • 为什么?我的问题是我不明白哪种语法有效。 “clients”是 json 文件的根,如您在示例中所见。现在我有一个静态的“output.clients”,我需要一个动态参数“output.json_root”(其中 json_root 是函数调用中的“clients”)。但是使用“output.json_root”不起作用。在 MyGet(json_root: any) 的定义中,它说“未使用的参数”
  • 好的,我明白了。在那种情况下,人们在上面所说的 output[json_root] 应该可以工作。然而,做一个输出和 json_root 的 console.log 并验证输出和 json_root 是你所期望的。如果输出是像 var obj = {a: 'aa', b: 'bb'} 这样的对象,则 obj['a'] 是正确的检索值。
  • 现在 [json_root] 工作..我不知道为什么昨天没有工作,我确定语法是一样的。谢谢!!
猜你喜欢
  • 2017-04-13
  • 2018-06-23
  • 2018-04-29
  • 2018-07-28
  • 2019-05-11
  • 1970-01-01
  • 2022-10-17
  • 2018-01-19
  • 2018-07-31
相关资源
最近更新 更多