Как запустить JSONiq из JSON с помощью try.zorba.io - PullRequest
1 голос
/ 15 марта 2019

Мне нужно написать выражение JSONiq, в котором перечислены только названия продуктов, стоимость которых минимум равна 3. Это мой файл 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?

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

На сайте, на который вы ссылаетесь, у меня работает следующая подборка:

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
0 голосов
/ 15 марта 2019

Исходный запрос может быть слегка изменен на (чтобы сохранить выражение 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, поскольку он содержит специальный символ пробела em (Unicode 2003) настрока выше "next_visit".Этот символ должен быть удален для успешного анализа этого JSON.

...