在 marklogic 中使用 Javascript 遍历 Json 节点?
Traversing a Json Node using Javascript in marklogic?
我想遍历一个JSON这样的节点(即/node.json)
{
"One": {
"Name": "One",
"Country": "US"
},
"Two": {
"State": "kentucky"
},
"Three": {
"Element1": "value1",
"Element2": "value2",
"Element3": "value3",
"Element4": "value4",
so on ...
}
}
已更新
我的用例:我尝试 运行 具有以下配置的 CORB 作业
Transform.xqy(我将所有元素保存在一个数组中)
var name = fn.tokenize(URI, ";");
const node = cts.doc(name);
var a= node.xpath("/One/*");
var b= node.xpath("/Two/*");
var c= node.xpath("/Three/*");
fn.stringJoin([a, b, c,name], " , ")
当开始 运行在我的 marklogic 数据库中为 1.3 M 文档创建 CSV 文件的 CORB 作业时,这是一个永无止境的故事。
更新为使用来自 Corb 的批次
好的。根据票证中的更多信息:
(1) 你没有迭代 uris
(2) 您正在对嵌套数组进行连接。好像很奇怪。
我的示例文档:
declareUpdate()
let obj = {
One: {
Name: "One",
Country: "US"
},
Two: {
State: "kentucky"
},
Three: {
Element1: "value1",
Element2: "value2",
Element3: "value3",
Element4: "value4"
}
}
xdmp.documentInsert('/test1.json', obj)
xdmp.documentInsert('/test2.json', obj)
根据示例,我认为可以在您的模块中运行的代码。 uris 是模仿来自 Corb 的批处理 uris:
let uris= '/test1.json;/test2.json'
let rows = uris.split(';')
rows.map(uri => {
let obj = fn.head(fn.doc(uri)).toObject()
return [
...Object.keys(obj.One).map(k => obj.One[k]),
...Object.keys(obj.Two).map(k => obj.Two[k]),
...Object.keys(obj.Three).map(k => obj.Three[k])
].join(',')
}).join('\n')
导致:
One,US,kentucky,value1,value2,value3,value4
One,US,kentucky,value1,value2,value3,value4
我想遍历一个JSON这样的节点(即/node.json)
{
"One": {
"Name": "One",
"Country": "US"
},
"Two": {
"State": "kentucky"
},
"Three": {
"Element1": "value1",
"Element2": "value2",
"Element3": "value3",
"Element4": "value4",
so on ...
}
}
已更新 我的用例:我尝试 运行 具有以下配置的 CORB 作业
Transform.xqy(我将所有元素保存在一个数组中)
var name = fn.tokenize(URI, ";");
const node = cts.doc(name);
var a= node.xpath("/One/*");
var b= node.xpath("/Two/*");
var c= node.xpath("/Three/*");
fn.stringJoin([a, b, c,name], " , ")
当开始 运行在我的 marklogic 数据库中为 1.3 M 文档创建 CSV 文件的 CORB 作业时,这是一个永无止境的故事。
更新为使用来自 Corb 的批次
好的。根据票证中的更多信息: (1) 你没有迭代 uris (2) 您正在对嵌套数组进行连接。好像很奇怪。
我的示例文档:
declareUpdate()
let obj = {
One: {
Name: "One",
Country: "US"
},
Two: {
State: "kentucky"
},
Three: {
Element1: "value1",
Element2: "value2",
Element3: "value3",
Element4: "value4"
}
}
xdmp.documentInsert('/test1.json', obj)
xdmp.documentInsert('/test2.json', obj)
根据示例,我认为可以在您的模块中运行的代码。 uris 是模仿来自 Corb 的批处理 uris:
let uris= '/test1.json;/test2.json'
let rows = uris.split(';')
rows.map(uri => {
let obj = fn.head(fn.doc(uri)).toObject()
return [
...Object.keys(obj.One).map(k => obj.One[k]),
...Object.keys(obj.Two).map(k => obj.Two[k]),
...Object.keys(obj.Three).map(k => obj.Three[k])
].join(',')
}).join('\n')
导致:
One,US,kentucky,value1,value2,value3,value4
One,US,kentucky,value1,value2,value3,value4