首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问jsoniq中的对象数组中的对象

访问jsoniq中的对象数组中的对象
EN

Stack Overflow用户
提问于 2018-09-12 12:41:39
回答 2查看 551关注 0票数 1

对于JSONIQ来说,我现在要做的是使用zorba从JSONIQ中的对象数组中的索引对象中提取一些信息。这是目前为止的代码。

代码语言:javascript
复制
    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

我想要做的是归还书名,作者和价格。我能够返回数组,但是每当我输入索引时。

代码语言:javascript
复制
let $a:=$o.book[1].title
return $a

我没有得到任何结果。我的预期产出是

代码语言:javascript
复制
Everyday Italian

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-12 14:52:05

JSONiq中的数组查找是用双方括号完成的,如下所示:

代码语言:javascript
复制
let $a:=$o.book[[1]].title
return $a

但是,请注意,try.zorba.io页面基于Zorba (2.9)的早期版本,该版本不支持最新版本的JSONiq (应该在某个时候得到升级)。在这个早期版本中,数组查找通常是重载函数调用语法:

代码语言:javascript
复制
let $a:=$o.book(1).title
return $a

如果您想使用JSONiq的稳定版本及其最新的语法,可以下载zorba3.0并在本地执行查询。

具有简单方括号的[]的语义是,它使用位置或布尔筛选器对序列进行过滤,例如:

代码语言:javascript
复制
(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的主要公民,并且与流执行兼容(例如,过滤数百万个对象序列而不实际实现它)。

票数 2
EN

Stack Overflow用户

发布于 2018-09-12 13:44:56

我最初计划对一个对象数组进行迭代,以打印出对象中的数据。对于JSONIQ,我发现我需要插入数组名,在本例中它是book()。

我下面的代码应该迭代,标题,作者,和书的价格。

代码语言:javascript
复制
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
}

代码可以在佐尔巴上进行测试。

产出如下:

代码语言:javascript
复制
{ "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" }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52295453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档