2017-09-13 87 views
0

我有一个分配给一个变量$节点下面的JSON文件:如何使用XQuery过滤JSON文档?

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

我不知道如何让每一个单个节点。我尝试了$ node // node()。但没有获得每个单一的节点。我需要查询此JSON文档&插入跳过空节点到Marklogic DB,其被提及如下:

{ “B”: “值”, “C1”:1, “C2”: 2 }

我是新来处理JSON文件,请帮忙。

在此先感谢。

+0

只是为了帮助您理解您可能在迭代节点时出现了什么问题,您可能有一个看起来像(在节点构造函数中)的构造: document {object-node {“b”:text {“value” },“c1”:number-node {1},“c2”:number-node {2},...}}。 因此,$ node/object-node()/ node()解决了孩子们的问题。 – kcoleman

回答

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!

+0

谢谢,这个帮助 – LSB