【问题标题】:How to filter JSON document using XQuery?如何使用 XQuery 过滤 JSON 文档?
【发布时间】:2017-09-13 04:02:42
【问题描述】:

我将以下 JSON 文档分配给一个变量作为 $node:

{ "b": "value",
  "c1": 1,
  "c2": 2,
  "d": "",
  "e": ""
}

我不知道如何获取每个单个节点。我试过 $node//node()。但没有得到每个节点。我需要查询此 JSON 文档以跳过空节点并插入 Marklogic DB,如下所述:

{ "b": "值", “c1”:1, “c2”:2 }

我是处理 JSON 文档的新手,请帮忙。

提前致谢。

【问题讨论】:

  • 只是为了帮助您了解迭代节点时可能遇到的问题,您可能有一个看起来像(在节点构造函数术语中)的构造:document{object-node{"b":text {"value"}, "c1":number-node{1}, "c2":number-node{2}, ...}}。所以,$node/object-node()/node() 处理子节点。

标签: json xpath xquery marklogic marklogic-8


【解决方案1】:

不确定这是否能很好地满足您的需求,但类似这样的方法会起作用:

let $node := xdmp:unquote('
  { "b": "value",
    "c1": 1,
    "c2": 2,
    "d": "",
    "e": ""
  }
')/node()
return xdmp:to-json(map:new((
  for $property in $node/node()
  where string-length(string($property)) > 0
  return
    map:entry(name($property), data($property))
)))

HTH!

【讨论】:

  • 谢谢,这个有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 2014-06-08
  • 1970-01-01
相关资源
最近更新 更多