首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将JSONiq用于JSON

如何将JSONiq用于JSON
EN

Stack Overflow用户
提问于 2019-03-30 09:22:27
回答 1查看 369关注 0票数 1

问题是编写一个JSONiq FLWOR表达式,该表达式可以显示其价格至少为3的产品的名称。

我已经尝试了在How to run JSONiq from JSON with try.zorba.io上提供的答案,但这不是我所期望的答案。除此之外,我还尝试了很多JSON表达式,但仍然在try.zobia.io中出现错误。这是我的JSON文件。

代码语言:javascript
复制
{
    "supermarket": {
        "visit": [ {
            "_type": "bought", 
            "date": "March 8th, 2019",
            "product": [ {
                    "name": "Kit Kat",
                    "amount": 3,
                    "cost": 3.5
                    },
                {
                    "name": "Coca Cola",
                    "amount": 2,
                    "cost": 3
                    },
                {
                    "name": "Apple",
                    "amount": "Some",
                    "cost": 5.9
                    }
                ]
            },  
            {
            "_type": "planning", 
            "product": [{
                    "name": "Pen",
                    "amount": 2
                    },
                {
                    "name": "Paper",
                    "amount": "One ream"
                    }
                ]
            }
        ]
    }
}

这是我当前的JSONiq表达式。

代码语言:javascript
复制
jsoniq version "1.0";
let $a := { (: my JSON file :) }    
for $x in $a.supermarket.visit
let $y = $x.product()
where $y.price >= "3.0"
return $y.name

最后的输出应该是Kit KatCoca ColaApple。我希望能为我的JSON文件或JSONiq提供一些帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-30 10:36:54

visit也是一个数组,因此您需要使用括号来访问for中的各个访问。这

代码语言:javascript
复制
jsoniq version "1.0";
let $data := { (: my JSON file :) }
for $visit in $data.supermarket.visit()
for $product in $visit.product()
where $product.cost ge 3
return $product.name

会回来

代码语言:javascript
复制
Kit Kat Coca Cola Apple

由于上面的内容产生了一个序列,所以您可以在允许序列的任何地方使用它。

代码语言:javascript
复制
let $data := { (: my JSON file :) }
return string-join(
  for $visit in $data.supermarket.visit()
  for $product in $visit.product()
  where $product.cost ge 3
  return $product.name
, ", ")

结果:

代码语言:javascript
复制
Kit Kat, Coca Cola, Apple

当然,这也是可行的:

代码语言:javascript
复制
for $product in $data.supermarket.visit().product()
where $product.cost ge 3
return $product.name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55429950

复制
相关文章

相似问题

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