我需要编写一个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部件有问题吗?
发布于 2019-03-15 12:26:37
在您链接到的站点上,下列选择对我有效:
jsoniq version "1.0";
{ "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
}
]
}
}.supermarket_visit.bought()[$$ instance of object and $$.individual_price le 3].item_name发布于 2019-03-15 14:01:10
可以将原始查询稍微修改为(为了保持FLWOR表达式):
jsoniq version "1.0";
let $document := { (: put the document here :) }
for $x in $document.supermarket_visit.bought[]
where $x instance of object and $x.individual_price le 3
return $x.item_name请注意,try.zorba.io是Zorba (2.9)的旧版本,没有实现最新的、稳定的JSONiq版本。这就是为什么必须在这个特定页面上使用()而不是[]。如果您下载了Zorba的最新版本,那么上面的查询应该可以工作。
此外,问题中提供的原始文档不是格式良好的JSON,因为它在"next_visit“行上包含一个特殊的em空间字符(Unicode 2003)。为了成功地解析这个JSON,必须删除这个字符。
https://stackoverflow.com/questions/55181991
复制相似问题