Node-RED 解析从维基媒体 api 收到的 json

Node-RED parse json received from wikimedia api

我是 node-red 的新手,想解析从维基百科 api 收到的内容。我向查询端点发送请求:

https://en.wikipedia.org/w/api.php?action=query&titles={{{query}}}&prop=revisions&rvprop=parsetree&format=json&rvsection=0

响应类似于:

{
  ...,
  "query": {
    "normalized": [ ... ],
    "pages": {
      "123456789": {
        "pageid": 123456789,
        "ns": 0,
        "title": "title",
        "revisions": [{
          "parsetree": "...."
        }]
      }
    }
  }
}

我需要解析 parsetree 的内容,但无法动态获取第一个 json object 页面。

当然我可以这样做:msg.payload.query.pages.123456789.revisions[0].parsetree

但是我有很多标题想查询和处理。

是否有其他方法获取parsetree的内容?

您始终可以使用 Object.keys(obj) 方法 (doc)

获取对象中的键列表

所以像这样的东西应该可以工作

var pages = Object.keys(msg.payload.query.pages);
for (var i=0; i<pages.length; i++) {
  var parsetree = msg.payload.query.pages[pages[i]].revisions[0].parsetree;
  ...
}