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;
...
}
我是 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;
...
}