Как разобрать jira-версии с сайта Atlassian - PullRequest
0 голосов
/ 05 апреля 2019

Я столкнулся с проблемой.Я должен проанализировать JSON, содержащий список версий jira-core с сайта Atlassian.

При попытке проанализировать JSON с веб-сайта с помощью JsonSlurper я получаю сообщение об ошибке:

"Текущее чтение символа - 'd' со значением int 100, Невозможноопределить текущий символ, это не строка, число, массив или строка объекта номер 1 номер индекса 0 "

код:

def http = new HTTPBuilder('https://my.atlassian.com/download/feeds/')
def html = http.get( path : 'current/jira-core.json')
def slurper = new groovy.json.JsonSlurper(type: JsonParserType.LAX).parse(html)
print slurper

Как мне получитьправильный блок JSON?

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Проблема в том, что это не json ... Это обратный вызов jsonp, поэтому действительный json заключен в downloads( ... ) вызов javascript

Вы можете использовать регулярное выражение, чтобы развернуть текст из URL с помощью:

import groovy.json.*

def jsonp = new URL('https://my.atlassian.com/download/feeds/current/jira-core.json').text
def extract = jsonp =~ /^downloads\((.+)\)$/
if (!extract.matches()) {
    throw new RuntimeException("Bad jsonp!")
}
def parsed = new JsonSlurper().parseText(extract.group(1))

parsed.each { println it.description }
0 голосов
/ 05 апреля 2019

Хотя это напрямую не решает проблему JSON vs JSONP, если вы просто хотите использовать данные версии Jira, существует также сторонний сайт с именем iapetus.fyi , который предоставляет версию продукта Atlassian. информация, включая возможность предоставления уведомлений Firebase вашему приложению о событиях изменения версии.

...