对于JSONIQ来说,我现在要做的是使用zorba从JSONIQ中的对象数组中的索引对象中提取一些信息。这是目前为止的代码。
jsoniq version "1.0";
let $bstore:={
"bookstore":
{
"book":[
{
"category":"cooking",
"title":"Everyday Italian",
"author":"Giada De Laurentiis",
"year":"2005",
"price":"30.00"
},
{
"category":"web",
"title":"XQuery Kick Start",
"author":["James McGovern","Per Bothner","Kurt Cagle","James Linn","Vaidyanathan Nagarajan"],
"year":"2003",
"price":"49.99"
}
]
}
}
for $o in $bstore.bookstore
let $a:=$o.book
return $a.title我想要做的是归还书名,作者和价格。我能够返回数组,但是每当我输入索引时。
let $a:=$o.book[1].title
return $a我没有得到任何结果。我的预期产出是
Everyday Italian任何帮助都将不胜感激。
发布于 2018-09-12 14:52:05
JSONiq中的数组查找是用双方括号完成的,如下所示:
let $a:=$o.book[[1]].title
return $a但是,请注意,try.zorba.io页面基于Zorba (2.9)的早期版本,该版本不支持最新版本的JSONiq (应该在某个时候得到升级)。在这个早期版本中,数组查找通常是重载函数调用语法:
let $a:=$o.book(1).title
return $a如果您想使用JSONiq的稳定版本及其最新的语法,可以下载zorba3.0并在本地执行查询。
具有简单方括号的[]的语义是,它使用位置或布尔筛选器对序列进行过滤,例如:
(1, 2, 3, 4)[2]返回2。
数组不同于序列。数组可以看作是“装箱”序列,也就是说,(1, 2, 3, 4)是由四个项组成的序列,而[1, 2, 3, 4]是一个包含嵌套的1、2、3和4的数组。
如果需要,可以将数组转换为带有$o.book[]的序列($o.book()使用Zorba2.9)。您可以使用[ $sequence ]将序列“包装”回数组中。它有点像打开,或关闭一个盒子。
只有数组可以递归嵌套,例如,[ [1, 2], [3, 4]]有两个层次的嵌套,与对JSON数组的期望完全一样。但是序列不嵌套,即((1, 2), (3, 4)与平面序列(1,2,3,4)相同,嵌套级别为零。项序列是JSONiq的主要公民,并且与流执行兼容(例如,过滤数百万个对象序列而不实际实现它)。
发布于 2018-09-12 13:44:56
我最初计划对一个对象数组进行迭代,以打印出对象中的数据。对于JSONIQ,我发现我需要插入数组名,在本例中它是book()。
我下面的代码应该迭代,标题,作者,和书的价格。
jsoniq version "1.0";
let $bstore:={
"bookstore":
{
"book":[
{
"category":"cooking",
"title":"Everyday Italian",
"author":"Giada De Laurentiis",
"year":"2005",
"price":"30.00"
},
{
"category":"web",
"title":"XQuery Kick Start",
"author":["James McGovern","Per Bothner","Kurt Cagle","James Linn","Vaidyanathan Nagarajan"],
"year":"2003",
"price":"49.99"
}
]
}
}
for $o in $bstore.bookstore.book()
return
{
"title":$o.title,
"author":$o.author,
"price":$o.price
}代码可以在佐尔巴上进行测试。
产出如下:
{ "title" : "Everyday Italian", "author" : "Giada De Laurentiis", "price" : "30.00" }{ "title" : "XQuery Kick Start", "author" : [ "James McGovern", "Per Bothner", "Kurt Cagle", "James Linn", "Vaidyanathan Nagarajan" ], "price" : "49.99" }https://stackoverflow.com/questions/52295453
复制相似问题