如何从 JSON 运行 JSONiq 到 try.zorba.io

How to run JSONiq from JSON with try.zorba.io

我需要编写一个 JSONiq 表达式,仅列出成本至少为 3 的产品名称。这是我在 [=22= 中输入的 JSON 文件]XQuery 部分:

{ "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 部分有问题吗?

以下选择适用于您链接到的站点:

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

原始查询可以稍微修改为(为了保留 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 space 字符 (Unicode 2003) .必须删除此字符才能成功解析此 JSON。