RxJs- Observable - 如何从JSON对象获取数据

时间:2018-05-02 06:30:40

标签: javascript typescript rxjs observable

我有一个JSON响应可观察如下。我想从两个单独的数组中获取这个observable的数据,如[abc,xyz]和[aa,bb]。是否可以使用rx observables map和switchmap在同一个observable中获取两个数组。

this.data$ = Observable.of({
      "data": [
        {
          "firstname": "abc",
          "lastname": "aa"
        },
         {
          "firstname": "xyz",
          "lastname": "bb"
        }
      ]
    })  .map(res => res.data)
      .switchMap(dataArray => {
        return Observable.from(dataArray);
      })
      .map((arrayResp: any) => {
        return ( arrayResp.firstname);
      }).toArray()

这里我只能得到一个阵列。是否可以在此方法中获得两个数组。

2 个答案:

答案 0 :(得分:0)

您可以简单地使用数组映射函数:

private int hoveredRow = -1, hoveredColumn = -1;

    table.addMouseMotionListener(new MouseMotionListener() {
        @Override
        public void mouseMoved(MouseEvent e) {
            Point p = e.getPoint();
            hoveredRow = table.rowAtPoint(p);
            hoveredColumn = table.columnAtPoint(p);
            table.setRowSelectionInterval(hoveredRow, hoveredRow);
            table.repaint();    
        }
        @Override
        public void mouseDragged(MouseEvent e) {
            hoveredRow = hoveredColumn = -1;
            table.repaint();
        }
    });

Here is a running example.

答案 1 :(得分:0)

你有json字符串,所以你需要在你的switchMap方法

中这样做
 .switchMap(dataArray => {
        return Observable.from(JSON.parse( dataArray));
      })

或者你也可以这样做

this.data$ = Observable.of(JSON.parse(`{
      "data": [
        {
          "firstname": "abc",
          "lastname": "aa"
        },
         {
          "firstname": "xyz",
          "lastname": "bb"
        }
      ]
    }`).subscribe(res=> console.log(res.data));