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

萝らか妹 提交于 2019-12-11 11:28:32

问题


I need to write a JSONiq expression that lists only the name of the products that cost at least 3. This is my JSON file which i had typed in the XQuery section:

{ "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
                }
            ]
        }
}

and this is my JSONiq Xquery JSONiq command, which i dont really know where to type in 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

I am getting many errors in try.zorba.io and im really new to JSONiq and JSON. Is something wrong with my JSON or JSONiq part?


回答1:


The following selection works for me at the site you linked to:

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



回答2:


The original query can be slightly modified to (in order to keep a FLWOR expression):

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

Note that try.zorba.io is an older version of Zorba (2.9) that does not implement the latest, stable JSONiq version. This is why () must be used instead of [] on this specific page. If you download the latest version of Zorba, the above query should work.

Also, the original document provided in the question is not well-formed JSON, because it contains a special em space character (Unicode 2003) on the line above "next_visit". This character must be removed for this JSON to be parsed successfully.



来源:https://stackoverflow.com/questions/55181991/how-to-run-jsoniq-from-json-with-try-zorba-io

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!