我遇到了问题。 我必须从Atlassian网站解析包含list的jira-core版本的JSON。
尝试使用JsonSlurper从网站解析JSON时,出现错误消息:
“当前读取的字符为'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块?
答案 0 :(得分:1)
问题是,这不是json ...这是jsonp回调,因此有效的json包装在downloads( ... )
javascript调用中
您可以使用正则表达式通过以下方式从网址中解开文本:
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 }
答案 1 :(得分:0)
虽然这不能直接解决JSON与JSONP问题,但是,如果您只是想使用Jira版本数据,那么还有一个名为iapetus.fyi的第三方站点可以提供Atlassian产品版本信息,包括可以为您的应用提供Firebase notifications来进行版本更改事件。