2

次の形式のjson応答があります。

[{
  "id": 425055,
  "title": "Foo"
}, {
  "id": 425038,
  "title": "Bar"
}, {
  "id": 425015,
  "title": "Narf"
}]

oboe.js を使用して、ハイランド ストリームを作成します。

const cruiseNidStream = _((push, next) => {
    oboe({
        url: 'http://fake.com/bar/overview,
        method: 'GET',
        headers: {
            'X-AUTH': 'some token',
        },
    }).node('.*', (overview) => {
        // I expect here to get an object having and id, title property
        push(null, overview.id);
    }).done((overview) => {
        push(null, _.nil);
    }).fail((reason) => {
        console.error(reason);
        push(null, _.nil);
    });
});

私の問題は、その配列の各要素と一致するようにノードを使用するパターンがわからないことです。現在、現在のセットアップで取得しているアイテムは、すべてのオブジェクトとプロパティです。

425055
Foo
{ id: 227709, title: 'Foo' }

応答に次のようなプロパティがあったとします。

{
  'overview': [],
}

使用できたはず.overview.*です。

4

2 に答える 2

3

Oboe には、パスによるデータ照合とダックタイピングによるデータ照合の 2 つの方法があります。

ダックタイピングで

oboe('/data.json')
  .node('{id title}', function(x) {
    console.log('from duck-typing', x)
  })

パス別

oboe('/data.json')
  .node('!.*', function(x) {
    console.log('from path matching', x)
  })
  //or also valid
  .node('!.[*]', function(x) {
    console.log('from path matching', x)
  })

パスの例で、!文字に注目してください。これはツリーのルート ノードを参照します。このパターンは 3 つのオブジェクトのみを対象とし、さらに下にネストされた独自のプロパティは対象としません。

コンソールでこの作業を表示し、ソースも表示できるgomixを作成しました。

于 2016-12-14T19:09:57.803 に答える
1

Oboe.js はダックタイピングをサポートしています:

.node('{id title}', (overview) => {
 }

私のjsonはフラットだったので、これはうまくいくことに注意してください。ネストされた json では、結果が異なる場合があります。

于 2016-12-13T19:29:14.553 に答える