我有多种json格式。如何循环遍历json文件以显示开发人员的姓名。谢谢
示例:
doc1.json
{
"script": "collectionlib.sjs"
"version": "1.0.1"
"Developers":"Melvin Mckee"
}
doc2.json
{
"script": "TechReports.sjs"
"version": "1.1.5"
"Developers":"Brenton York"
}
我可以为单个json文件做
'use strict';
var doc = cts.doc("/doc1.json")
var node = xdmp.toJSON(doc)
node.root.Developers
//Return result: "Melvin Mckee"
但不确定如何构造For..Loop以获取结果,开发人员的名字是“ Melvin Mckee”和“ Brenton York”
var items = cts.uris(null,
null,
cts.collectionQuery("scripts-collection")
)
for (var i = 0; i < items.length;i++){
var doc = cts.doc(items[i]);
var node = xdmp.toJSON(doc);
node.root.developers
}
我在Qconsole上得到结果为NULL。
答案 0 :(得分:2)
部分问题是node.root.developers
的小写字母'd',而您提供的数据则大写的字母'D'。那可能是一个错字。
MarkLogic返回最后一个表达式的值,但是for循环不返回值。您要做的是在循环之前声明一个数组变量,在循环期间添加它,然后返回该变量。
尝试一下:
let uris =
cts.uris(
null,
null,
cts.collectionQuery("scripts-collection")
)
let devs = [];
for (let uri of uris) {
let doc = cts.doc(uri);
let node = xdmp.toJSON(doc);
devs.push(node.root.Developers);
}
devs