2017-09-13 88 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