marklogic - Marklogic json:config 生成“_children”
问题描述
我不明白为什么 Marklogic json:config 会生成“_children”。如何排除“_children”。我看到所有枚举的孩子都回来找父母,但 JSON 输出中有很多额外的垃圾。
let $config := json:config("custom")
let $_ := map:put( $config, "full-element-names",xs:QName("Nav:keynavlist")
json输出:
"Navigators": {
"keynavlist": {
"_children": [
{
"keynav": {
"_value": "Fuel Cells"
}
},
{
"keynav": {
"_value": "Microorganisms"
}
},
{
"keynav": {
"_value": "Waste Treatment"
}
解决方案
我猜你想得到类似的东西:
{
"Navigators": {
"keynavlist": [{
"keynav": "Fuel Cells"
}, {
"keynav": "Microorganisms"
}, {
"keynav": "Waste Treatment"
}]
}
}
但最接近您可以使用 json 转换库的是:
{
"Navigators": {
"keynavlist": {
"keynav": ["Fuel Cells", "Microorganisms", "Waste Treatment"]
}
}
}
使用:
xquery version "1.0-ml";
import module namespace json="http://marklogic.com/xdmp/json" at "/MarkLogic/json/json.xqy";
let $config := json:config("custom")
let $_ := map:put($config, "array-element-names", ("keynav"))
return json:transform-to-json(
<Navigators>
<keynavlist>
<keynav>Fuel Cells</keynav>
<keynav>Microorganisms</keynav>
<keynav>Waste Treatment</keynav>
</keynavlist>
</Navigators>,
$config
)
考虑使用递归函数构建 json,可能是这样的:
declare function local:xml-to-json($nodes) {
for $node in $nodes
return typeswitch ($node)
case element() return
if ($node/attribute() or ($node/element() and $node/text())) then
object-node {
local-name($node): object-node {
"@": array-node{ local:xml-to-json($node/attribute()) },
"_": array-node { local:xml-to-json($node/node()) }
}
}
else
object-node {
local-name($node): array-node{ local:xml-to-json($node/node()) }
}
case attribute() return
object-node {
local-name($node): data($node)
}
default return $node
};
local:xml-to-json(
<Navigators>
<keynavlist>
<keynav>Fuel Cells</keynav>
<keynav>Microorganisms</keynav>
<keynav>Waste Treatment</keynav>
</keynavlist>
</Navigators>
)
!
推荐阅读
- java - 如何将字符串的字符与数组的索引匹配
- java - 在另一个类中调用 OkHttp 的 OnResponse 中的 UI 线程
- ios - 由于内存泄漏,ReactNative iOS 应用程序崩溃
- android - 如何链接到硬件条码扫描器?
- haskell - 这是类型声明吗?
- database - tfdquery.aggregates 可以用作 autoIDgenerator
- java - 为什么我的 sql 中出现运行时错误,提示语法错误?
- scala - 如何将数据帧的单行转换为 Scala 中的字符串?
- php - 我的 symfony 网站不工作 - 文件“config.yml”不存在
- javascript - 带有 highcharts 的全屏引导卡(100% 高度)