【发布时间】:2019-03-15 11:50:03
【问题描述】:
我需要编写一个 JSONiq 表达式,它只列出价格至少为 3 的产品的名称。这是我在 XQuery 部分中输入的 JSON 文件:
{ "supermarket_visit":{
"date":"08032019",
"bought":[
"item",{
"type":"confectionary",
"item_name":"Kit_Kat",
"number": 3,
"individual_price": 3.5
},
"item",{
"type":"drinks",
"item_name":"Coca_Cola",
"number": 2,
"individual_price": 3
},
"item",{
"type":"fruits",
"item_name":"apples",
"number": "some"
}
],
"next_visit":[
"item",{
"type":"stationary",
"item_name":"A4_paper",
"number": 1
},
"item",{
"type":"stationary",
"item_name":"pen",
"number": 2
}
]
}
}
这是我的 JSONiq Xquery JSONiq 命令,我真的不知道在哪里输入try.zorba.io:
let $x := find("supermarket_visit")
for $x in $supermarket.bought let $i := $x.item
where $i.individual_price <=3
return $i.item_name
我在 try.zorba.io 中遇到了很多错误,而且我对 JSONiq 和 JSON 真的很陌生。我的 JSON 或 JSONiq 部分有问题吗?
【问题讨论】:
-
请注意,不幸的是,在 XQuery 3 之后,JSON 支持的合并导致了两种方法,JSONiq 和 XPath 3.1/XQuery 3.1,在 W3C 标准 XQuery 3.1 中,选择将是
?supermarket_visit?bought?*[. instance of map(*) and ?individual_price <= 3]?item_name,请参阅 xqueryfiddle.liberty-development.net/gWcDMeq . -
事实上,JSONiq 和 XQuery 3.1 已经过优化以涵盖互补的用例(纯 JSON 查询与高效的内存映射 + 数组结构)。此处记录了差异:stackoverflow.com/questions/44919443/…